aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-132/tyler-wardhaugh/clojure/bb.edn4
-rw-r--r--challenge-132/tyler-wardhaugh/clojure/deps.edn3
-rw-r--r--challenge-132/tyler-wardhaugh/clojure/pom.xml5
-rw-r--r--challenge-132/tyler-wardhaugh/clojure/src/tw/weekly/c132/t1.clj29
-rw-r--r--challenge-132/tyler-wardhaugh/clojure/test/tw/weekly/c132_test.clj12
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"