2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -0,0 +1,32 @@
|
|||
(ns test-p.core)
|
||||
(defn gcd
|
||||
"(gcd a b) computes the greatest common divisor of a and b."
|
||||
[a b]
|
||||
(if (zero? b)
|
||||
a
|
||||
(recur b (mod a b))))
|
||||
|
||||
(defn stern-brocat-next [p]
|
||||
" p is the block of the sequence we are using to compute the next block
|
||||
This routine computes the next block "
|
||||
(into [] (concat (rest p) [(+ (first p) (second p))] [(second p)])))
|
||||
|
||||
(defn seq-stern-brocat
|
||||
([] (seq-stern-brocat [1 1]))
|
||||
([p] (lazy-seq (cons (first p)
|
||||
(seq-stern-brocat (stern-brocat-next p))))))
|
||||
|
||||
; First 15 elements
|
||||
(println (take 15 (seq-stern-brocat)))
|
||||
|
||||
; Where numbers 1 to 10 first appear
|
||||
(doseq [n (concat (range 1 11) [100])]
|
||||
(println "The first appearnce of" n "is at index" (some (fn [[i k]] (when (= k n) (inc i)))
|
||||
(map-indexed vector (seq-stern-brocat)))))
|
||||
|
||||
;; Check that gcd between 1st 1000 consecutive elements equals 1
|
||||
; Create cosecutive pairs of 1st 1000 elements
|
||||
(def one-thousand-pairs (take 1000 (partition 2 1 (seq-stern-brocat))))
|
||||
; Check every pair has a gcd = 1
|
||||
(println (every? (fn [[ith ith-plus-1]] (= (gcd ith ith-plus-1) 1))
|
||||
one-thousand-pairs))
|
||||
Loading…
Add table
Add a link
Reference in a new issue