aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-072/tyler-wardhaugh/clojure/src/tw/weekly/c72/t1.clj18
-rw-r--r--challenge-072/tyler-wardhaugh/clojure/test/tw/weekly/c72_test.clj9
2 files changed, 22 insertions, 5 deletions
diff --git a/challenge-072/tyler-wardhaugh/clojure/src/tw/weekly/c72/t1.clj b/challenge-072/tyler-wardhaugh/clojure/src/tw/weekly/c72/t1.clj
index 5aa5ba8d23..daefe5c833 100644
--- a/challenge-072/tyler-wardhaugh/clojure/src/tw/weekly/c72/t1.clj
+++ b/challenge-072/tyler-wardhaugh/clojure/src/tw/weekly/c72/t1.clj
@@ -2,7 +2,21 @@
(:require [clojure.pprint :refer [cl-format]])
(:require [clojure.edn :as edn]))
+(defn fact
+ "Factorial"
+ [n]
+ (->> n inc (range 1) (reduce *)))
+
+(defn trailing-zeros
+ "Count the trailing 0s in a number"
+ [n]
+ (let [[d cnt] (->> n str reverse (partition-by #(= \0 %)) first ((juxt first count)))]
+ (if (= d \0) cnt 0)))
+
(defn -main
- ""
+ "Run Task 1 with a number N, defaulting to 10"
[& args]
- )
+ (let [n (or (some-> args first edn/read-string) 10)
+ n! (fact n)
+ zs (trailing-zeros n!)]
+ (cl-format true "~a! = ~a has ~a trailing zero~:p" n n! zs)))
diff --git a/challenge-072/tyler-wardhaugh/clojure/test/tw/weekly/c72_test.clj b/challenge-072/tyler-wardhaugh/clojure/test/tw/weekly/c72_test.clj
index 0ad8d5b8ee..40f0c39e7a 100644
--- a/challenge-072/tyler-wardhaugh/clojure/test/tw/weekly/c72_test.clj
+++ b/challenge-072/tyler-wardhaugh/clojure/test/tw/weekly/c72_test.clj
@@ -1,11 +1,14 @@
(ns tw.weekly.c72-test
- (:require [clojure.test :refer [deftest is testing]]
- [tw.weekly.c72.t1 :refer []]
+ (:require [clojure.test :refer [are deftest is testing]]
+ [tw.weekly.c72.t1 :refer [fact trailing-zeros]]
[tw.weekly.c72.t2 :refer []]))
(deftest task-1
(testing "Task 1, Trailing Zeroes"
- ))
+ (are [n e] (= (trailing-zeros (fact n)) e)
+ 10 2
+ 7 1
+ 4 0)))
(deftest task-2
(testing "Task 2, Lines Range"