From 52ea135482c4af63a7c35414b24df8d337996303 Mon Sep 17 00:00:00 2001 From: Tyler Wardhaugh Date: Tue, 8 Sep 2020 18:17:08 -0700 Subject: Task 2 --- .../tyler-wardhaugh/clojure/src/tw/weekly/ch_2.clj | 23 ++++++++++++++++++---- .../clojure/test/tw/weekly/c73_test.clj | 9 ++++++--- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/challenge-073/tyler-wardhaugh/clojure/src/tw/weekly/ch_2.clj b/challenge-073/tyler-wardhaugh/clojure/src/tw/weekly/ch_2.clj index f30d48346d..10ae923c08 100644 --- a/challenge-073/tyler-wardhaugh/clojure/src/tw/weekly/ch_2.clj +++ b/challenge-073/tyler-wardhaugh/clojure/src/tw/weekly/ch_2.clj @@ -1,8 +1,23 @@ (ns tw.weekly.ch-2 + (:require [clojure.pprint :refer [cl-format]]) (:require [clojure.edn :as edn])) -(defn -main - "" +(defn smallest-neighbor + "Find the smallest neighbor over a sequence, returning 0 when none is found." + [coll] + (let [min-or-zero (fn [coll] + (let [m (apply min coll)] + (if (< m (peek coll)) m 0)))] + (->> coll + (reductions conj []) + (drop 1) + (map min-or-zero)))) + + + (defn -main + "Run Task 2 a list of integers (A), defaulting to the example given in the task description." [& args] - (let [] - )) + (let [A (or (some->> args (map edn/read-string)) [7 8 3 12 10])] + (cl-format true "~10a: (~{~a~^ ~})~%~10a: (~{~a~^ ~})~%" + "Input" A + "Output" (smallest-neighbor A)))) diff --git a/challenge-073/tyler-wardhaugh/clojure/test/tw/weekly/c73_test.clj b/challenge-073/tyler-wardhaugh/clojure/test/tw/weekly/c73_test.clj index f3228886bb..37499e014c 100644 --- a/challenge-073/tyler-wardhaugh/clojure/test/tw/weekly/c73_test.clj +++ b/challenge-073/tyler-wardhaugh/clojure/test/tw/weekly/c73_test.clj @@ -1,7 +1,7 @@ (ns tw.weekly.c73-test - (:require [clojure.test :refer [are deftest is testing with-test]] + (:require [clojure.test :refer [are deftest testing]] [tw.weekly.ch-1 :refer [sliding-min]] - [tw.weekly.ch-2 :refer []])) + [tw.weekly.ch-2 :refer [smallest-neighbor]])) (deftest ch-1 (testing "Task 1" @@ -11,4 +11,7 @@ (deftest ch-2 (testing "Task 2" - )) + (are [input output] (= (smallest-neighbor input) output) + (list 7 8 3 12 10) (list 0 7 0 3 3) + (list 4 6 5) (list 0 4 4) + ))) -- cgit