diff options
5 files changed, 45 insertions, 8 deletions
diff --git a/challenge-132/tyler-wardhaugh/clojure/bb.edn b/challenge-132/tyler-wardhaugh/clojure/bb.edn index 4cd11817b8..a0e8b96a48 100644 --- a/challenge-132/tyler-wardhaugh/clojure/bb.edn +++ b/challenge-132/tyler-wardhaugh/clojure/bb.edn @@ -63,7 +63,9 @@ :task (run-task :t1 *command-line-args*)} task-1-bb {:doc "Run Task 1 (via Babashka)" - :task (run-task-bb :t1 *command-line-args*)} + :task (binding [*out* *err*] + (println "error: can't run Task 1 via Babashka because it depends on some incompatible libraries.") + (System/exit 1))} task-2 {:doc "Run Task 2 (via clojure)" :task (run-task :t2 *command-line-args*)} diff --git a/challenge-132/tyler-wardhaugh/clojure/deps.edn b/challenge-132/tyler-wardhaugh/clojure/deps.edn index 5b1400b27e..e821835450 100644 --- a/challenge-132/tyler-wardhaugh/clojure/deps.edn +++ b/challenge-132/tyler-wardhaugh/clojure/deps.edn @@ -1,5 +1,6 @@ {:paths ["src" "resources"] - :deps {org.clojure/clojure {:mvn/version "1.10.3"}} + :deps {org.clojure/clojure {:mvn/version "1.10.3"} + clojure.java-time/clojure.java-time {:mvn/version "0.3.3"}} :aliases {:test {:extra-paths ["test"] :extra-deps {org.clojure/test.check {:mvn/version "1.1.0"} diff --git a/challenge-132/tyler-wardhaugh/clojure/pom.xml b/challenge-132/tyler-wardhaugh/clojure/pom.xml index b3edb199c9..ca7a3f1f2a 100644 --- a/challenge-132/tyler-wardhaugh/clojure/pom.xml +++ b/challenge-132/tyler-wardhaugh/clojure/pom.xml @@ -24,6 +24,11 @@ <artifactId>clojure</artifactId> <version>1.10.3</version> </dependency> + <dependency> + <groupId>clojure.java-time</groupId> + <artifactId>clojure.java-time</artifactId> + <version>0.3.3</version> + </dependency> </dependencies> <build> <sourceDirectory>src</sourceDirectory> diff --git a/challenge-132/tyler-wardhaugh/clojure/src/tw/weekly/c132/t1.clj b/challenge-132/tyler-wardhaugh/clojure/src/tw/weekly/c132/t1.clj index 007e4b2067..b24255c143 100644 --- a/challenge-132/tyler-wardhaugh/clojure/src/tw/weekly/c132/t1.clj +++ b/challenge-132/tyler-wardhaugh/clojure/src/tw/weekly/c132/t1.clj @@ -1,14 +1,35 @@ (ns tw.weekly.c132.t1 - (:require [clojure.edn :as edn])) + (:require [java-time :as j] + [clojure.pprint :refer [cl-format]])) ;;; ; Task description for TASK #1 › Mirror Dates ;;; -(def DEFAULT-INPUT []) +(def DEFAULT-TODAY "2021/09/22") +(def DEFAULT-INPUT ["2021/09/18" DEFAULT-TODAY]) +(def DATE-FORMAT "yyyy/MM/dd") + +(defn parse-date + [s] + (j/local-date DATE-FORMAT s)) + +(defn format-date + [d] + (-> (j/formatter DATE-FORMAT) + (j/format d))) + +(defn mirror-date + [origin today] + (let [delta (j/time-between :days origin today) + before (j/minus origin (j/days delta)) + after (j/plus today (j/days delta))] + (list before after))) (defn -main "Run Task 1 with a given input N, defaulting to the first example from the task description." [& args] - (let [[D] (or args DEFAULT-INPUT)] - )) + (let [[origin today] (map parse-date (or args DEFAULT-INPUT))] + (->> (mirror-date origin today) + (map format-date) + (cl-format true "~{~a~^, ~}~%")))) diff --git a/challenge-132/tyler-wardhaugh/clojure/test/tw/weekly/c132_test.clj b/challenge-132/tyler-wardhaugh/clojure/test/tw/weekly/c132_test.clj index e4ff9454a9..6d2c5f2894 100644 --- a/challenge-132/tyler-wardhaugh/clojure/test/tw/weekly/c132_test.clj +++ b/challenge-132/tyler-wardhaugh/clojure/test/tw/weekly/c132_test.clj @@ -1,11 +1,19 @@ (ns tw.weekly.c132-test (:require [clojure.test :refer [deftest is testing]] - #_[tw.weekly.c132.t1 :refer []] + [tw.weekly.c132.t1 :as t1] #_[tw.weekly.c132.t2 :refer []])) +(def today (t1/parse-date t1/DEFAULT-TODAY)) + (deftest task-1 (testing "Task 1, Mirror Dates" - )) + (let [today (t1/parse-date t1/DEFAULT-TODAY)] + (is (= (map t1/parse-date ["2021/09/14" "2021/09/26"]) + (t1/mirror-date (t1/parse-date "2021/09/18") today))) + (is (= (map t1/parse-date ["1929/10/27" "2067/09/05"]) + (t1/mirror-date (t1/parse-date "1975/10/10") today))) + (is (= (map t1/parse-date ["1912/07/08" "2076/04/30"]) + (t1/mirror-date (t1/parse-date "1967/02/14") today)))))) (deftest task-2 (testing "Task 2, Hash Join" |
