diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-06-06 23:41:26 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-06 23:41:26 +0100 |
| commit | 4827c4bca8deaa98df21f4a61ac2f3d92196dd8a (patch) | |
| tree | c6b1b704aa50b023e9a8261a9c9157d3a377a8b8 /challenge-115 | |
| parent | 22bba96a4bdf01a1265cba6a17eced7a32f6ede0 (diff) | |
| parent | 8ad51d6fd340d1ed47d08b22ca619a4e48b2eb9d (diff) | |
| download | perlweeklychallenge-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')
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]))))) |
