Created
June 11, 2010 02:20
-
-
Save bhenry/433952 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;problem 18 | |
(def triangle18-str "75 | |
95 64 | |
17 47 82 | |
18 35 87 10 | |
20 04 82 47 65 | |
19 01 23 75 03 34 | |
88 02 77 73 07 63 67 | |
99 65 04 28 06 16 70 92 | |
41 41 26 56 83 40 80 70 33 | |
41 48 72 33 47 32 37 16 94 29 | |
53 71 44 65 25 43 91 52 97 51 14 | |
70 11 33 28 77 73 17 78 39 68 17 57 | |
91 71 52 38 17 14 91 43 58 50 27 29 48 | |
63 66 04 68 89 53 67 30 73 16 69 87 40 31 | |
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23") | |
(def rows18 (.split triangle18-str "\n")) | |
;;turn triangle into vector of vectors | |
(def triangle18 | |
(vec (map #(vec (map (fn [x] (Integer. x)) (.split % " "))) rows18))) | |
;;problem 67 uses same code below | |
(def triangle67-str (slurp "triangle.txt")) | |
(def rows67 (.split triangle67-str "\r\n")) | |
;;turn triangle into vector of vectors | |
(def triangle67 | |
(vec (map #(vec (map (fn [x] (Integer. x)) (.split % " "))) rows67))) | |
;; for 18 and 67 in project euler | |
(defn max-path-sum | |
"give it a vector of vectors that form a triangle" | |
([t] (max-path-sum t (- (count t) 2) (t (dec (count t))))) | |
([t top bot] | |
(if (> top 0) | |
(max-path-sum | |
t | |
(dec top) | |
(vec | |
(let [row (t top)] | |
(for [i (range top)] | |
(+ (row i) (max (bot i) (bot (inc i)))))))) | |
(+ (bot 0) ((t top) 0))))) | |
(defn prob18 [] | |
(max-path-sum triangle18)) | |
(defn prob67 [] | |
(max-path-sum triangle67)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment