aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-072/tyler-wardhaugh/clojure/deps.edn3
-rw-r--r--challenge-072/tyler-wardhaugh/clojure/pom.xml5
-rw-r--r--challenge-072/tyler-wardhaugh/clojure/resources/input.txt100
-rw-r--r--challenge-072/tyler-wardhaugh/clojure/src/tw/weekly/c72/t2.clj18
-rw-r--r--challenge-072/tyler-wardhaugh/clojure/test/tw/weekly/c72_test.clj5
5 files changed, 124 insertions, 7 deletions
diff --git a/challenge-072/tyler-wardhaugh/clojure/deps.edn b/challenge-072/tyler-wardhaugh/clojure/deps.edn
index cd1f521cd5..1e2252e193 100644
--- a/challenge-072/tyler-wardhaugh/clojure/deps.edn
+++ b/challenge-072/tyler-wardhaugh/clojure/deps.edn
@@ -1,5 +1,6 @@
{:paths ["src" "resources"]
- :deps {org.clojure/clojure {:mvn/version "1.10.1"}}
+ :deps {org.clojure/clojure {:mvn/version "1.10.1"}
+ pjstadig/reducible-stream {:mvn/version "0.1.5"}}
:aliases
{:test {:extra-paths ["test"]
:extra-deps {org.clojure/test.check {:mvn/version "1.0.0"}}}
diff --git a/challenge-072/tyler-wardhaugh/clojure/pom.xml b/challenge-072/tyler-wardhaugh/clojure/pom.xml
index 656cf76e7b..f624b5b60e 100644
--- a/challenge-072/tyler-wardhaugh/clojure/pom.xml
+++ b/challenge-072/tyler-wardhaugh/clojure/pom.xml
@@ -23,6 +23,11 @@
<artifactId>clojure</artifactId>
<version>1.10.1</version>
</dependency>
+ <dependency>
+ <groupId>pjstadig</groupId>
+ <artifactId>reducible-stream</artifactId>
+ <version>0.1.5</version>
+ </dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
diff --git a/challenge-072/tyler-wardhaugh/clojure/resources/input.txt b/challenge-072/tyler-wardhaugh/clojure/resources/input.txt
new file mode 100644
index 0000000000..e5a15512e0
--- /dev/null
+++ b/challenge-072/tyler-wardhaugh/clojure/resources/input.txt
@@ -0,0 +1,100 @@
+L1
+L2
+L3
+L4
+L5
+L6
+L7
+L8
+L9
+L10
+L11
+L12
+L13
+L14
+L15
+L16
+L17
+L18
+L19
+L20
+L21
+L22
+L23
+L24
+L25
+L26
+L27
+L28
+L29
+L30
+L31
+L32
+L33
+L34
+L35
+L36
+L37
+L38
+L39
+L40
+L41
+L42
+L43
+L44
+L45
+L46
+L47
+L48
+L49
+L50
+L51
+L52
+L53
+L54
+L55
+L56
+L57
+L58
+L59
+L60
+L61
+L62
+L63
+L64
+L65
+L66
+L67
+L68
+L69
+L70
+L71
+L72
+L73
+L74
+L75
+L76
+L77
+L78
+L79
+L80
+L81
+L82
+L83
+L84
+L85
+L86
+L87
+L88
+L89
+L90
+L91
+L92
+L93
+L94
+L95
+L96
+L97
+L98
+L99
+L100
diff --git a/challenge-072/tyler-wardhaugh/clojure/src/tw/weekly/c72/t2.clj b/challenge-072/tyler-wardhaugh/clojure/src/tw/weekly/c72/t2.clj
index 64111fde2b..072a02ef1e 100644
--- a/challenge-072/tyler-wardhaugh/clojure/src/tw/weekly/c72/t2.clj
+++ b/challenge-072/tyler-wardhaugh/clojure/src/tw/weekly/c72/t2.clj
@@ -1,8 +1,18 @@
(ns tw.weekly.c72.t2
- (:require [clojure.pprint :refer [cl-format]])
- (:require [clojure.edn :as edn]))
+ (:require [clojure.java.io :as io])
+ (:require [clojure.edn :as edn])
+ (:require [pjstadig.reducible-stream :refer [decode-lines!]]))
+
+(defn lines-from
+ "Produce a range of lines from a file"
+ [file a b]
+ (let [xf (comp (drop (dec a)) (take (- b a -1)))
+ source (decode-lines! file)]
+ (sequence xf source)))
(defn -main
- ""
+ "Run Task 2 with a file and range of lines to print, defaulting to the first example in the task description"
[& args]
- )
+ (let [file (or (some-> args first io/file) (io/resource "input.txt"))
+ [a b] (or (some->> args (drop 1) (take 2) (map edn/read-string)) [4 12])]
+ (dorun (map println (lines-from file a b)))))
diff --git a/challenge-072/tyler-wardhaugh/clojure/test/tw/weekly/c72_test.clj b/challenge-072/tyler-wardhaugh/clojure/test/tw/weekly/c72_test.clj
index 40f0c39e7a..950b030fe8 100644
--- a/challenge-072/tyler-wardhaugh/clojure/test/tw/weekly/c72_test.clj
+++ b/challenge-072/tyler-wardhaugh/clojure/test/tw/weekly/c72_test.clj
@@ -1,7 +1,8 @@
(ns tw.weekly.c72-test
(:require [clojure.test :refer [are deftest is testing]]
+ [clojure.java.io :as io]
[tw.weekly.c72.t1 :refer [fact trailing-zeros]]
- [tw.weekly.c72.t2 :refer []]))
+ [tw.weekly.c72.t2 :refer [lines-from]]))
(deftest task-1
(testing "Task 1, Trailing Zeroes"
@@ -12,4 +13,4 @@
(deftest task-2
(testing "Task 2, Lines Range"
- ))
+ (is (= (list "L1" "L2" "L3") (lines-from (io/resource "input.txt") 1 3)))))