aboutsummaryrefslogtreecommitdiff
path: root/challenge-115
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-06-06 23:41:26 +0100
committerGitHub <noreply@github.com>2021-06-06 23:41:26 +0100
commit4827c4bca8deaa98df21f4a61ac2f3d92196dd8a (patch)
treec6b1b704aa50b023e9a8261a9c9157d3a377a8b8 /challenge-115
parent22bba96a4bdf01a1265cba6a17eced7a32f6ede0 (diff)
parent8ad51d6fd340d1ed47d08b22ca619a4e48b2eb9d (diff)
downloadperlweeklychallenge-club-4827c4bca8deaa98df21f4a61ac2f3d92196dd8a.tar.gz
perlweeklychallenge-club-4827c4bca8deaa98df21f4a61ac2f3d92196dd8a.tar.bz2
perlweeklychallenge-club-4827c4bca8deaa98df21f4a61ac2f3d92196dd8a.zip
Merge pull request #4208 from tylerw/tw/challenge-115
Challenge 115
Diffstat (limited to 'challenge-115')
-rw-r--r--challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/core.clj12
-rw-r--r--challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/t1.clj19
-rw-r--r--challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/t2.clj27
-rw-r--r--challenge-115/tyler-wardhaugh/clojure/test/tw/weekly/c115_test.clj10
4 files changed, 68 insertions, 0 deletions
diff --git a/challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/core.clj b/challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/core.clj
new file mode 100644
index 0000000000..9d83092eaf
--- /dev/null
+++ b/challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/core.clj
@@ -0,0 +1,12 @@
+(ns tw.weekly.c115.core
+ (:require [tw.weekly.c115.t1 :as t1])
+ (:require [tw.weekly.c115.t2 :as t2])
+ (:gen-class))
+
+(defn -main
+ "Run all tasks"
+ [& _]
+ (println "Task #1:")
+ (t1/-main)
+ (println "\nTask #2:")
+ (t2/-main))
diff --git a/challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/t1.clj b/challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/t1.clj
new file mode 100644
index 0000000000..8abc631b84
--- /dev/null
+++ b/challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/t1.clj
@@ -0,0 +1,19 @@
+(ns tw.weekly.c115.t1
+ (:require [clojure.edn :as edn]
+ [clojure.string :as str]))
+
+;;;
+; Task description for TASK #1 › String Chain
+;;;
+(def DEFAULT-INPUT ["abc" "dea" "cd"])
+
+(defn string-chain
+ ""
+ [coll])
+
+(defn -main
+ "Run Task 1 with a given input N, defaulting to the first example from the
+ task description."
+ [& args]
+ (let [S (or (some->> args (map edn/read-string)) DEFAULT-INPUT)]
+ (println (string-chain S))))
diff --git a/challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/t2.clj b/challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/t2.clj
new file mode 100644
index 0000000000..f401262044
--- /dev/null
+++ b/challenge-115/tyler-wardhaugh/clojure/src/tw/weekly/c115/t2.clj
@@ -0,0 +1,27 @@
+(ns tw.weekly.c115.t2
+ (:require [clojure.edn :as edn]))
+
+;;;
+; Task description for TASK #2 › Largest Multiple
+;;;
+(def DEFAULT-INPUT [1 0 2 6])
+
+(defn largest-multiple
+ "Determine the largest mulitple that can be formed using coll"
+ [coll]
+ (let [min-even (->> coll (filter even?) (reduce min))
+ freqs (-> coll frequencies (update min-even dec))
+ remaining (into [] (mapcat (fn [[num x]] (repeat x num))) freqs)]
+ (->> remaining
+ sort
+ (concat [min-even])
+ reverse
+ (reduce str "")
+ (Integer/parseInt))))
+
+(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 (largest-multiple N))))
diff --git a/challenge-115/tyler-wardhaugh/clojure/test/tw/weekly/c115_test.clj b/challenge-115/tyler-wardhaugh/clojure/test/tw/weekly/c115_test.clj
new file mode 100644
index 0000000000..18141065d6
--- /dev/null
+++ b/challenge-115/tyler-wardhaugh/clojure/test/tw/weekly/c115_test.clj
@@ -0,0 +1,10 @@
+(ns tw.weekly.c115-test
+ (:require [clojure.test :refer [deftest is testing]]
+ #_[tw.weekly.c115.t1 :refer []]
+ [tw.weekly.c115.t2 :refer [largest-multiple]]))
+
+(deftest task-2
+ (testing "Task 2, Largest Multiple"
+ (is (= 6210 (largest-multiple [1 0 2 6])))
+ (is (= 8412 (largest-multiple [1 4 2 8])))
+ (is (= 7614 (largest-multiple [4 1 7 6])))))