Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
2
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-1.clj
Normal file
2
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-1.clj
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
(defn fibs []
|
||||
(map first (iterate (fn [[a b]] [b (+ a b)]) [0 1])))
|
||||
16
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-10.clj
Normal file
16
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-10.clj
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
(ns fib.core)
|
||||
(require '[clojure.core.async
|
||||
:refer [<! >! >!! <!! timeout chan alt! go]])
|
||||
|
||||
(defn fib [c]
|
||||
(loop [a 0 b 1]
|
||||
(>!! c a)
|
||||
(recur b (+ a b))))
|
||||
|
||||
|
||||
(defn -main []
|
||||
(let [c (chan)]
|
||||
(go (fib c))
|
||||
(dorun
|
||||
(for [i (range 10)]
|
||||
(println (<!! c))))))
|
||||
1
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-2.clj
Normal file
1
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-2.clj
Normal file
|
|
@ -0,0 +1 @@
|
|||
(nth (fibs) 5)
|
||||
6
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-3.clj
Normal file
6
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-3.clj
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
(defn fibs []
|
||||
(map first ;; throw away the "metadata" (see below) to view just the fib numbers
|
||||
(iterate ;; create an infinite sequence of [prev, curr] pairs
|
||||
(fn [[a b]] ;; to produce the next pair, call this function on the current pair
|
||||
[b (+ a b)]) ;; new prev is old curr, new curr is sum of both previous numbers
|
||||
[0 1]))) ;; recursive base case: prev 0, curr 1
|
||||
1
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-4.clj
Normal file
1
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-4.clj
Normal file
|
|
@ -0,0 +1 @@
|
|||
(def fib (lazy-cat [0 1] (map + fib (rest fib))))
|
||||
2
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-5.clj
Normal file
2
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-5.clj
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
user> (take 10 fib)
|
||||
(0 1 1 2 3 5 8 13 21 34)
|
||||
18
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-6.clj
Normal file
18
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-6.clj
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
;; max is which fib number you'd like computed (0th, 1st, 2nd, etc.)
|
||||
;; n is which fib number you're on for this call (0th, 1st, 2nd, etc.)
|
||||
;; j is the nth fib number (ex. when n = 5, j = 5)
|
||||
;; i is the nth - 1 fib number
|
||||
(defn- fib-iter
|
||||
[max n i j]
|
||||
(if (= n max)
|
||||
j
|
||||
(recur max
|
||||
(inc n)
|
||||
j
|
||||
(+ i j))))
|
||||
|
||||
(defn fib
|
||||
[max]
|
||||
(if (< max 2)
|
||||
max
|
||||
(fib-iter max 1 0N 1N)))
|
||||
11
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-7.clj
Normal file
11
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-7.clj
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
(defn fib [n]
|
||||
(letfn [(fib* [n]
|
||||
(if (zero? n)
|
||||
[0 1]
|
||||
(let [[a b] (fib* (quot n 2))
|
||||
c (*' a (-' (*' 2 b) a))
|
||||
d (+' (*' b b) (*' a a))]
|
||||
(if (even? n)
|
||||
[c d]
|
||||
[d (+' c d)]))))]
|
||||
(first (fib* n))))
|
||||
6
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-8.clj
Normal file
6
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-8.clj
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
(defn fib [n]
|
||||
(case n
|
||||
0 0
|
||||
1 1
|
||||
(+ (fib (- n 1))
|
||||
(fib (- n 2)))))
|
||||
8
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-9.clj
Normal file
8
Task/Fibonacci-sequence/Clojure/fibonacci-sequence-9.clj
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
(def fib
|
||||
(memoize
|
||||
(fn [n]
|
||||
(case n
|
||||
0 0
|
||||
1 1
|
||||
(+ (fib (- n 1))
|
||||
(fib (- n 2)))))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue