diff options
| author | Tyler Wardhaugh <twardhaugh@cap-rx.com> | 2021-06-10 22:52:31 -0700 |
|---|---|---|
| committer | Tyler Wardhaugh <twardhaugh@cap-rx.com> | 2021-06-11 17:03:26 -0700 |
| commit | 9079aefe5ed30d287632a47a52274adc20615e34 (patch) | |
| tree | 2d5be2a0793e276b1b4079c3b4f166a842d13b4c /challenge-116 | |
| parent | 2ba8fa25d8bdaf1da13742db10a10a775e47083e (diff) | |
| download | perlweeklychallenge-club-9079aefe5ed30d287632a47a52274adc20615e34.tar.gz perlweeklychallenge-club-9079aefe5ed30d287632a47a52274adc20615e34.tar.bz2 perlweeklychallenge-club-9079aefe5ed30d287632a47a52274adc20615e34.zip | |
Ch116 (Clojure): Task 2
Diffstat (limited to 'challenge-116')
3 files changed, 20 insertions, 8 deletions
diff --git a/challenge-116/tyler-wardhaugh/clojure/deps.edn b/challenge-116/tyler-wardhaugh/clojure/deps.edn index ce910ebc97..71837236a5 100644 --- a/challenge-116/tyler-wardhaugh/clojure/deps.edn +++ b/challenge-116/tyler-wardhaugh/clojure/deps.edn @@ -1,5 +1,6 @@ {:paths ["src" "resources"] - :deps {org.clojure/clojure {:mvn/version "1.10.1"}} + :deps {org.clojure/clojure {:mvn/version "1.10.1"} + org.clojure/math.numeric-tower {:mvn/version "0.0.4"}} :aliases {:test {:extra-paths ["test"] :extra-deps {org.clojure/test.check {:mvn/version "1.0.0"}}} diff --git a/challenge-116/tyler-wardhaugh/clojure/src/tw/weekly/c116/t2.clj b/challenge-116/tyler-wardhaugh/clojure/src/tw/weekly/c116/t2.clj index 2252023c1d..a92eabcd4a 100644 --- a/challenge-116/tyler-wardhaugh/clojure/src/tw/weekly/c116/t2.clj +++ b/challenge-116/tyler-wardhaugh/clojure/src/tw/weekly/c116/t2.clj @@ -1,14 +1,25 @@ (ns tw.weekly.c116.t2 - (:require [clojure.edn :as edn])) + (:require [clojure.edn :as edn] + [clojure.math.numeric-tower :as math])) ;;; ; Task description for TASK #2 › Sum of Squares ;;; (def DEFAULT-INPUT [34]) +(defn sum-of-squares + "Determine whether the given number n (an integer that is >= 10) + such that sum of squares of all digits is a perfect square." + [n] + (let [source (->> n str seq (map (comp #(Integer/parseInt %) str))) + xf (map #(math/expt % 2)) + sum (transduce xf + source) + sqrt (math/sqrt sum)] + (= sqrt (math/floor sqrt)))) + (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)] - )) + (println (if (sum-of-squares N) 1 0)))) diff --git a/challenge-116/tyler-wardhaugh/clojure/test/tw/weekly/c116_test.clj b/challenge-116/tyler-wardhaugh/clojure/test/tw/weekly/c116_test.clj index 8c25e5ae4a..87578731f9 100644 --- a/challenge-116/tyler-wardhaugh/clojure/test/tw/weekly/c116_test.clj +++ b/challenge-116/tyler-wardhaugh/clojure/test/tw/weekly/c116_test.clj @@ -1,7 +1,7 @@ (ns tw.weekly.c116-test (:require [clojure.test :refer [deftest is testing]] [tw.weekly.c116.t1 :refer [number-sequence]] - #_[tw.weekly.c116.t2 :refer []])) + [tw.weekly.c116.t2 :refer [sum-of-squares]])) (deftest task-1 (testing "Task 1, Number Sequence" @@ -10,8 +10,8 @@ (is (= "10203 as it is impossible to split satisfying the conditions." (number-sequence 10203))))) -#_(deftest task-2 +(deftest task-2 (testing "Task 2, Sum of Squares" - (is ) - (is ) - (is ))) + (is (true? (sum-of-squares 34))) + (is (true? (sum-of-squares 50))) + (is (false? (sum-of-squares 52))))) |
