diff options
| -rw-r--r-- | challenge-137/tyler-wardhaugh/clojure/src/tw/weekly/c137/t2.clj | 22 | ||||
| -rw-r--r-- | challenge-137/tyler-wardhaugh/clojure/test/tw/weekly/c137/t2_test.clj | 12 |
2 files changed, 30 insertions, 4 deletions
diff --git a/challenge-137/tyler-wardhaugh/clojure/src/tw/weekly/c137/t2.clj b/challenge-137/tyler-wardhaugh/clojure/src/tw/weekly/c137/t2.clj index 8b7cf78fc2..8f288e825c 100644 --- a/challenge-137/tyler-wardhaugh/clojure/src/tw/weekly/c137/t2.clj +++ b/challenge-137/tyler-wardhaugh/clojure/src/tw/weekly/c137/t2.clj @@ -1,13 +1,31 @@ (ns tw.weekly.c137.t2 - (:require [clojure.edn :as edn])) + (:require [clojure.edn :as edn] + [clojure.string :as str])) ;;; ; Task description for TASK #2 › Lychrel Number ;;; (def DEFAULT-INPUT [56]) +(def MAX-TIMES 500) +(def MAX-NUM 10000000) + +(defn flip + [n] + (Integer/parseInt (-> n str str/reverse))) + +(defn lychrel + [n] + (loop [n n + times 1] + (cond + (>= times MAX-TIMES) 1 + (>= n MAX-NUM) 1 + (= n (flip n)) 0 + :else (recur (+ n (flip n)) (inc times))))) (defn -main "Run Task 2 with a given input N, defaulting to the first example from the task description." [& args] - (let [[N] (or (some->> args (map edn/read-string)) DEFAULT-INPUT)])) + (let [[N] (or (some->> args (map edn/read-string)) DEFAULT-INPUT)] + (println (if (lychrel N) 1 0)))) diff --git a/challenge-137/tyler-wardhaugh/clojure/test/tw/weekly/c137/t2_test.clj b/challenge-137/tyler-wardhaugh/clojure/test/tw/weekly/c137/t2_test.clj index 04d601a7d2..d61252832a 100644 --- a/challenge-137/tyler-wardhaugh/clojure/test/tw/weekly/c137/t2_test.clj +++ b/challenge-137/tyler-wardhaugh/clojure/test/tw/weekly/c137/t2_test.clj @@ -1,6 +1,14 @@ (ns tw.weekly.c137.t2-test (:require [clojure.test :refer [deftest is testing]] - [tw.weekly.c137.t2 :refer []])) + [tw.weekly.c137.t2 :refer [lychrel]])) (deftest examples - (testing "Examples from description")) + (testing "Examples from description" + (is (= 0 (lychrel 56))) + (is (= 0 (lychrel 57))) + (is (= 0 (lychrel 59))))) + +(deftest maximum + (testing "Numbers that exceed our ceiling" + (is (= 1 (lychrel 998))) + (is (= 1 (lychrel 196))))) |
