From 3e95a8ea76b29d6a73124ac8a3bf65b46f77f232 Mon Sep 17 00:00:00 2001 From: Andy Niccolai Date: Sat, 5 Jul 2014 20:53:05 -0600 Subject: [PATCH] solve problem 8 --- src/eulercl/core.clj | 19 +++++++++++++++++-- test/eulercl/core_test.clj | 25 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/src/eulercl/core.clj b/src/eulercl/core.clj index c598ad0..c6dd8b4 100644 --- a/src/eulercl/core.clj +++ b/src/eulercl/core.clj @@ -76,8 +76,23 @@ (defn problem-6 ([] (problem-6 (range 1 101))) - ([r] (- (square-of-sums r) (sum-of-squares r))) - ) + ([r] (- (square-of-sums r) (sum-of-squares r)))) + +(defn sanitize-block-of-numbers [text] + (map (comp read-string str) + (clojure.string/replace text #"\s" ""))) + +(defn slice-vec [my-vector len start] + (subvec my-vector start (+ start len))) + +(defn problem-7 [text numAdjacent] + (let [nums (vec (sanitize-block-of-numbers text)) + endPos (- (count nums) numAdjacent) + sliceStarts (range 0 (+ 1 endPos))] + (apply max + (map (comp (partial reduce *) + (partial slice-vec nums numAdjacent)) + sliceStarts)))) (defn -main [& args] diff --git a/test/eulercl/core_test.clj b/test/eulercl/core_test.clj index 9178057..4c891f5 100644 --- a/test/eulercl/core_test.clj +++ b/test/eulercl/core_test.clj @@ -26,3 +26,28 @@ (is (= (problem-6 (range 1 11)) 2640)) (is (= (problem-6) 25164150))) + +(deftest problem-7-test + (let [text "73167176531330624919225119674426574742355349194934 + 96983520312774506326239578318016984801869478851843 + 85861560789112949495459501737958331952853208805511 + 12540698747158523863050715693290963295227443043557 + 66896648950445244523161731856403098711121722383113 + 62229893423380308135336276614282806444486645238749 + 30358907296290491560440772390713810515859307960866 + 70172427121883998797908792274921901699720888093776 + 65727333001053367881220235421809751254540594752243 + 52584907711670556013604839586446706324415722155397 + 53697817977846174064955149290862569321978468622482 + 83972241375657056057490261407972968652414535100474 + 82166370484403199890008895243450658541227588666881 + 16427171479924442928230863465674813919123162824586 + 17866458359124566529476545682848912883142607690042 + 24219022671055626321111109370544217506941658960408 + 07198403850962455444362981230987879927244284909188 + 84580156166097919133875499200524063689912560717606 + 05886116467109405077541002256983155200055935729725 + 71636269561882670428252483600823257530420752963450"] + (is (= (problem-7 text 4) 5832)) + (is (= (problem-7 text 13) 23514624000)))) +