\ Copyright Charles A. Gray, 2007
\ A chaotic sequence
\ Qn = Q(n - Q(n-1)) + Q(n - Q(n-2))
\ 1 1 2 3 3 4 5 5 6 6 6 8 8 8 10 9 10 11 11 12 12 12 12 16 14 14
\ I am re-reading "Godel, Escher, Bach: An Eternal Golden Bamd" by
\ Douglas R. Hofstadter and decided to implement his chaotic sequence in
\ Forth as follows:
\ Return the nth term of the chaotic sequence.
: QQ ( n -- Sn )
DUP 2 < IF
DROP 0 1
ELSE
DUP 1- RECURSE \ n Q(n-1)
OVER - NEGATE RECURSE \ n Q(n-Q(n-1))
SWAP \ Q(n -Q(n-1)) n
DUP \ ... n n
2 - RECURSE \ ... n Q(n-2)
SWAP - NEGATE RECURSE \ ... Q(n - q(n-2))=20
THEN +
;
: .Chaotic ( n -- )
0 DO i QQ . SYNC LOOP
;
32 .Chaotic CR
|