[ create a new paste ] login | about

Project: programmingpraxis
Link: http://programmingpraxis.codepad.org/YhdKy2aR    [ raw code | output | fork ]

programmingpraxis - Scheme, pasted on Jan 27:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
; hofstadter's sequence

(define (hofstadter n)
  (let ((k 5))
    (let loop ((n (- n 2)) (rs (list 3 1)) (ss (list 4 2)))
      (if (zero? n) (reverse rs)
        (loop (- n 1)
              (cons (+ (car rs) (car ss)) rs)
              (let next ((n k))
                (cond ((member n rs) (next (+ n 1)))
                      ((member n ss) (next (+ n 1)))
                      (else (set! k (+ n 1))
                            (cons n ss)))))))))

(display (hofstadter 25))


Output:
1
(1 3 7 12 18 26 35 45 56 69 83 98 114 131 150 170 191 213 236 260 285 312 340 369 399)


Create a new paste based on this one


Comments: