From 061716eb0bcbdd2c7a89b95f4a9f89f89551190c Mon Sep 17 00:00:00 2001 From: Tyler Wardhaugh Date: Fri, 18 Sep 2020 12:17:25 -0700 Subject: Task 2 --- challenge-072/tyler-wardhaugh/clojure/deps.edn | 3 +- challenge-072/tyler-wardhaugh/clojure/pom.xml | 5 ++ .../tyler-wardhaugh/clojure/resources/input.txt | 100 +++++++++++++++++++++ .../clojure/src/tw/weekly/c72/t2.clj | 18 +++- .../clojure/test/tw/weekly/c72_test.clj | 5 +- 5 files changed, 124 insertions(+), 7 deletions(-) create mode 100644 challenge-072/tyler-wardhaugh/clojure/resources/input.txt 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 @@ clojure 1.10.1 + + pjstadig + reducible-stream + 0.1.5 + src 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))))) -- cgit