aboutsummaryrefslogtreecommitdiff
path: root/challenge-116
diff options
context:
space:
mode:
authorTyler Wardhaugh <twardhaugh@cap-rx.com>2021-06-10 22:52:31 -0700
committerTyler Wardhaugh <twardhaugh@cap-rx.com>2021-06-11 17:03:26 -0700
commit9079aefe5ed30d287632a47a52274adc20615e34 (patch)
tree2d5be2a0793e276b1b4079c3b4f166a842d13b4c /challenge-116
parent2ba8fa25d8bdaf1da13742db10a10a775e47083e (diff)
downloadperlweeklychallenge-club-9079aefe5ed30d287632a47a52274adc20615e34.tar.gz
perlweeklychallenge-club-9079aefe5ed30d287632a47a52274adc20615e34.tar.bz2
perlweeklychallenge-club-9079aefe5ed30d287632a47a52274adc20615e34.zip
Ch116 (Clojure): Task 2
Diffstat (limited to 'challenge-116')
-rw-r--r--challenge-116/tyler-wardhaugh/clojure/deps.edn3
-rw-r--r--challenge-116/tyler-wardhaugh/clojure/src/tw/weekly/c116/t2.clj15
-rw-r--r--challenge-116/tyler-wardhaugh/clojure/test/tw/weekly/c116_test.clj10
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)))))