-
-
Save ponkore/4493455 to your computer and use it in GitHub Desktop.
(ns projecteuler.problem-25 | |
(:require [clojure.string :as str] | |
[clojure.math.numeric-tower :as math]) | |
(:use clojure.test)) | |
(defn fib-gen | |
"ใใฃใใใใๆฐใ generate ใใ้ขๆฐใๅๆๅค[1 1]ใใ iterate ใใๅๆใ" | |
[[a b]] [b (+' a b)]) | |
(def fib-seq | |
"ใใฃใใใใๆฐใจใใฎ้ ใ่ฟใใ" | |
(->> (iterate fib-gen [1 1]) | |
(map first) | |
(map-indexed (fn [idx itm] [(inc idx) itm])))) | |
(defn find-min-fibs | |
"lower ไปฅไธใงๆๅฐใฎใใฃใใใใๆฐใจใใฎindexใ่ฟใใ" | |
[lower] | |
(first (drop-while #(<= (second %) lower) fib-seq))) | |
(defn problem-25 | |
"Project Euler Problem 25" | |
([] (problem-25 (math/expt 10 999))) | |
([lower] (first (find-min-fibs lower)))) | |
;;(time (problem-25)) | |
;;=> "Elapsed time: 5.387 msecs" | |
;; test | |
(is (= (find-min-fibs 100) [12 144])) | |
(is (= (problem-25 100) 12)) |
๐ ่ชญใฟใใใใงใ๏ผ
doc-string ใจ่งฃ่ชฌ, ใจใฆใๅใใใใใใงใ.
่งฃๆณใ้ ๅฝใงไฝใฎๅ้กใ็กใใจๆใใพใ.
ใใใใๅฅ่งฃใๆใๆตฎใใฐใชใใฎใง, ๆฌๅฝใซไบ็ดฐใช็นใง,
- fib-seq ใใคใณใใฏในไปใใทใผใฑใณในใ่ฟใใใจใ doc-string ใซๆ่จใใใ ใใงใชใ, ้ขๆฐๅใซใๅๆ (indexed-fibs ใจใ) ใใใจใใใฎใฏๅฆไฝใงใใใ.
- ใคใณใใฏในใ 1ใใๅงใพใใฎใฏใใญใฐใฉใใใ่ฆใใฐ็นๆฎใชใฎใง, doc-string ใซๆ่จใใใ, map-indexed ใไปใใฆใใใใคใณใใฏในใๆฏๅ inc ใใฆใใใฎใใใฃใใใชใใฎใง, fib-seq ใ่ฟใใทใผใฑใณในใฎใคใณใใฏในใฏ 0ใใๅงใใฆใใใฆ, ่งฃ็ญใไฝใใจใใซ inc ใใ. ใจใใใฎใฏใฉใใงใใใ.
่ฆใๆธใ: ใใฃใใใใๆฐ(ๅ)ใซใคใใฆใฏ @tnoda ใใๆ ๅฝ Problem 2 ใๅ็ ง.
tnoda ใใใkohyama ใใ
- ใณใกใณใใใใใจใใใใใพใใ
- indexed-fibs ใๅฝๅใจใใฆใฏใใกใใฎใปใใใใใงใใญใใใคใๅฝๅใฎไปๆนใง่ฟทใใพใ(็ตๆๅคฑๆใใใใจใ...)ใ
- ใคใณใใใฏในใๆฏๅ inc ใใใฎใฏใ็ขบใใซใใฃใใใชใใงใใญใใๆๆใใใใจใใใใใพใใ
- Problem2ใไปฅๅ่ฆใใใใณใกใณใใไผธใณใฆใ...ใใใฎ้ฑๆซใซใงใใฟใชใใใฎ่งฃ็ญใใใไธๅบฆใใใใใใฆใใใใใงใ(ใชใใชใ่ฟฝใใคใใชใใฎใงๅฐใฃใใใใงใ)ใ
Problem2ใไปฅๅ่ฆใใใใณใกใณใใไผธใณใฆใ...ใใใฎ้ฑๆซใซใงใใฟใชใใใฎ่งฃ็ญใใใไธๅบฆใใใใใใฆใใใใใงใ(ใชใใชใ่ฟฝใใคใใชใใฎใงๅฐใฃใใใใงใ)ใ
ไปใฎๅ้กใใใชใไผธใณใฆใใใฎใง๏ผใใฒ๏ผใใไธๅบฆ่ฆใฆใณใกใณใใ่ฟฝๅ ใใฆใฟใฆใใ ใใ๏ผ
ใณใผใใซใใใฆใณใกใณใใใใจใใใฐใfib-seqใใใฃใใใใๆฐๅใฎ็ๆใจใใคใณใใฏใทใณใฐใใใฃใใใซใใฆใใใฎใซ้ๅๆใใใใพใใ ๅฅใซใใใปใใใใใใ ใจๆใใพใใ
ๅคๆฐใ้ขๆฐใฎๅฝๅใฏๅใใใใฆใๅคฑๆใใพใใ
googleใฎlispใฎใณใผใใฃใณใฐ่ฆ็ด ใซใใใใใซใใไธญ่บซ(content)ใงใฏใชใ็ฎ็(intent)ใซใใฃใฆๅฝๅใในใใใจใใใฎใฏ้ ญใซใใฃใฆใใคใ xxx-list ใจใใซใชใฃใฆใใพใใ
take-while
ใซใใฆใ count
ใใใฎใใใใใจๆใใพใใใ
(defn fibs [] (map first (iterate (fn [[x0 x1]] [x1 (+ x0 x1)])
[1N 1N])))
(defn solve [limit-exclusive]
(inc (count (take-while #(< % limit-exclusive) (fibs)))))
(solve (. (java.math.BigInteger. "10") pow 999))
ใใฎๆนๆณใงใใใจใใคใณใใใฏในใใใญใฐใฉใ ใใใชใใใพใใ
+'
ใฎๅญๅจใๅใใฆ็ฅใใพใใใๅๅผทใซใชใใพใใ
ypsilon-takai ใใ
- ใณใกใณใใใใใจใใใใใพใใ
fib-seq
ใฎไปถใ็ขบใใซใใฎ้ใใใใใใพใใใๅๅfib-seq
ใจไธญ่บซใไธ่ดใใฆใชใใใไฝ่จใซ้ๅๆใๅขใใฆใใๆใใงใใญใplaster ใใใฎใณใกใณใใซใใfibs
ใfib-seq
ใซใตใใใใใใใ - google ใฎ lisp ใณใผใใฃใณใฐ่ฆ็ดใใใฎๅผ็จใใใใใจใใใใใพใใๆฅๆฌ่ช่จณ ใฏ็พๅจ็ฟป่จณ้ฒ่กไธญใงใใไธๅฟใชใณใฏ่ฒผใฃใฆใใใพใ( ใฝใผใน )ใ
plaster ใใ
- ใณใกใณใใใใใจใใใใใพใใ
- ่งฃๆณใ็ฎใใใใใใงใใใใฃใใใใฆใใใงใใญใใใใใจใใใใใพใใ
@ponkore ใใ
ๆฅๆฌ่ช่จณใใฃใฆใใใงใใญใใใใใกใณใใผใใใฃใฆใใฃใใใใ githubใงใใฃใฆใใใงใใญใใ ใใใใใใใ ใชใใ ใพใ ่จณใใใฆใชใใฎใใใใพใใญใใ ใใฃใฆใฟใใใใชใใ
@plaster ใใ
ๅใใคใณใใใฏในใชใใใชใใใชใใจๆใฃใใใงใใใๅบใพใใใงใใใ ๆ่ใ็กฌ็ดใใฆใ่จผๆ ใงใใญใ ใใฟใใจใงใใ
ใใใใปใใฎใกใใณใฃใจใใ็ฟป่จณใใฆใใชใใใงใ...ๅใใใซใชใณใฏๅบใใฆใใพใฃใใฎใงใใใใชใใ ใ็ณใ่จณใชใ(ๆใงใใใใพใใใใพใ!!)ใ
่ใๆนใจใๆๆณใจใ
map-indexed
ใงใใฃใใใใๆฐใฎ้ (index)ใๅฝใฆ่พผใใงใใพใใdrop-while
ใใๆ็ต็ใซใฏใใฎ้ (index) ใ็ญใใจใใฆ่ฟใใพใใclojure.math.numeric-tower/expt
ใไฝฟใใพใใ([org.clojure/math.numeric-tower "0.0.2"]
)ใ