; Author: Andres M. Torres
; Date: August 25,2013
; Title: Sequence A227643
;
; Description: Generating sequence A227643
; " Each a(n) is one more than the count of all descendant nodes in a tree,
; where values, n, are connected by relation p=c+bitcount(c). p=parent, c=child.
; Function bitcount(c) is the count of binary 1's in c. "
;
; Draft link: https://oeis.org/draft/A227643
; This is Blitz3D code, (a free Blitz3D demo is available from the following links:)
; http://www.blitzbasic.com/Products/_index_.php
; http://shareit1.element5.com/product.html?productid=147747
; { This code is in the Public Domain. }
Global nmax = 1572 ;10020; 20000
Dim R(nmax) ;; an array of R values, R(i) = i+bitcount(i)
Dim W(nmax) ;; tree weights (also known as node counts)
Graphics 900,600,32,2
Print " sequence A227643 sampler: "
Print
;; Initialize the array with R(i) = i+bitcount(i) values, (0..9999)
init_R()
s$ = " " : linecount=0
;; calculate the node counts, and store in W(n) (an array of node counts)
For z=0 To nmax
n=z
Repeat
W(n) = W(n)+1
n=R(n)
Until n=0 Or n>nmax
Next
z=0
Repeat
s = s + Str(W(z))+" "
If Len(s)>100
Print S
S = " " : linecount = linecount +1
End If
z = z +1
Until linecount=39
maxx = FindMax(0,z-1)
Print
Print" There were "+z+" terms listed for sequence A227643 "
Print" The index displayed that has the highest value = a("+maxx+") = "+W(maxx)
ratio# = 580.0/FindMax(0,779)
Print" Touch a key to see a scatter plot. "
WaitKey():Cls
;ratio# = 580.0/FindMax(0,779)
For x=0 To 779
y = 590- W(x)*ratio
WritePixel x+10,y, $33FFDD
Next
Color 140, 140, 140 ;66, 45, 34
Rect 10,10, 880,580, 0
Color 240,220,220
Locate 3,1
Print
Print" Shown here is a scatter plot for Sequence A227643 Sequence A227643 : "
Print" "
Print" within the rectangle, (not proportional) : "
Print" "
Print" x values are : 0 to 880, "
Print" y values are : 0 to 860, a(0) to a(860) "
Print" "
we()
;; initialize the "R" array
Function init_R()
Local z
Local nmax1 =nmax-1
For z=0 To nmax1
R(z) = z+bitcount(z)
Next
End Function
;; counts the number of set binary bits in value n.
Function bitcount(n) ;; A bitcount computation ...
Local c= 0 ; count
While(n)
c = c + 1
n = n And (n-1)
Wend
Return c
End Function
Function we()
WaitKey():End
End Function
;; returns the index that has the max value of W(n) within range (r1,r2)
Function FindMax(r1,r2)
Local x, max, maxx
For x=r1 To r2
If max