September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -1,47 +0,0 @@
|
|||
(define qc '#(0 1 1))
|
||||
(define filled 3)
|
||||
(define len 3)
|
||||
|
||||
;; chicken scheme: vector-resize!
|
||||
;; gambit: vector-append
|
||||
(define (extend-qc)
|
||||
(let* ((new-len (* 2 len))
|
||||
(new-qc (make-vector new-len)))
|
||||
(let copy ((n 0))
|
||||
(if (< n len)
|
||||
(begin
|
||||
(vector-set! new-qc n (vector-ref qc n))
|
||||
(copy (+ 1 n)))))
|
||||
(set! len new-len)
|
||||
(set! qc new-qc)))
|
||||
|
||||
(define (q n)
|
||||
(let loop ()
|
||||
(if (>= filled len) (extend-qc))
|
||||
(if (>= n filled)
|
||||
(begin
|
||||
(vector-set! qc filled (+ (q (- filled (q (- filled 1))))
|
||||
(q (- filled (q (- filled 2))))))
|
||||
(set! filled (+ 1 filled))
|
||||
(loop))
|
||||
(vector-ref qc n))))
|
||||
|
||||
(display "Q(1 .. 10): ")
|
||||
(let loop ((i 1))
|
||||
;; (print) behave differently regarding newline across compilers
|
||||
(display (q i))
|
||||
(display " ")
|
||||
(if (< i 10)
|
||||
(loop (+ 1 i))
|
||||
(newline)))
|
||||
|
||||
(display "Q(1000): ")
|
||||
(display (q 1000))
|
||||
(newline)
|
||||
|
||||
(display "bumps up to 100000: ")
|
||||
(display
|
||||
(let loop ((s 0) (i 1))
|
||||
(if (>= i 100000) s
|
||||
(loop (+ s (if (> (q i) (q (+ 1 i))) 1 0)) (+ 1 i)))))
|
||||
(newline)
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
Q(1 .. 10): 1 1 2 3 3 4 5 5 6 6
|
||||
Q(1000): 502
|
||||
bumps up to 100000: 49798
|
||||
Loading…
Add table
Add a link
Reference in a new issue