diff options
| author | Tyler Wardhaugh <twardhaugh@cap-rx.com> | 2021-10-22 12:23:19 -0700 |
|---|---|---|
| committer | Tyler Wardhaugh <twardhaugh@cap-rx.com> | 2021-10-22 23:48:52 -0700 |
| commit | 08e64c2a5d7556aaa70c57387494410fc2711535 (patch) | |
| tree | 3fe48ec62992251a75c7a8c67ce98d87bec17475 | |
| parent | 86c40a59c5f62ad69ebbd3b6c383b8694dfcc536 (diff) | |
| download | perlweeklychallenge-club-08e64c2a5d7556aaa70c57387494410fc2711535.tar.gz perlweeklychallenge-club-08e64c2a5d7556aaa70c57387494410fc2711535.tar.bz2 perlweeklychallenge-club-08e64c2a5d7556aaa70c57387494410fc2711535.zip | |
Ch135 (Clojure): Task 1
| -rw-r--r-- | challenge-135/tyler-wardhaugh/clojure/src/tw/weekly/c135/t1.clj | 24 | ||||
| -rw-r--r-- | challenge-135/tyler-wardhaugh/clojure/test/tw/weekly/c135/t1_test.clj | 7 |
2 files changed, 28 insertions, 3 deletions
diff --git a/challenge-135/tyler-wardhaugh/clojure/src/tw/weekly/c135/t1.clj b/challenge-135/tyler-wardhaugh/clojure/src/tw/weekly/c135/t1.clj index 1ab26e6eb5..0ff0714a19 100644 --- a/challenge-135/tyler-wardhaugh/clojure/src/tw/weekly/c135/t1.clj +++ b/challenge-135/tyler-wardhaugh/clojure/src/tw/weekly/c135/t1.clj @@ -7,9 +7,31 @@ ;;; (def DEFAULT-INPUT [1234567]) +(defn abs + "Return the absolute value of n." + [n] + (if (pos? n) n (- n))) + +(defn middle-3 + "Find the middle 3-digits of the given integer n if possible, otherwise throw + a sensible error." + [n] + {:pre [(int? n)]} + (let [sn (-> n abs str) + len (count sn)] + (cond + (even? len) (throw (ex-info "even number of digits" {"length" len})) + (< len 3) (throw (ex-info "too short" {"length" len})) + :else (subs sn (dec (/ len 2)) (+ 2 (/ len 2)))))) + (defn -main "Run Task 1 with a given input N, defaulting to the first example from the task description." [& args] (let [[N] (or (some->> args (map edn/read-string)) DEFAULT-INPUT)] - )) + (try + (println (middle-3 N)) + (catch Exception e + (cl-format true "error: ~a (~:{~a=~s~^, ~})~%" + (.getMessage e) + (ex-data e)))))) diff --git a/challenge-135/tyler-wardhaugh/clojure/test/tw/weekly/c135/t1_test.clj b/challenge-135/tyler-wardhaugh/clojure/test/tw/weekly/c135/t1_test.clj index f6dfa90c7d..707a9162cd 100644 --- a/challenge-135/tyler-wardhaugh/clojure/test/tw/weekly/c135/t1_test.clj +++ b/challenge-135/tyler-wardhaugh/clojure/test/tw/weekly/c135/t1_test.clj @@ -1,7 +1,10 @@ (ns tw.weekly.c135.t1-test (:require [clojure.test :refer [deftest is testing]] - #_[tw.weekly.c135.t1 :refer []])) + [tw.weekly.c135.t1 :refer [middle-3]])) (deftest examples (testing "Examples from description" - )) + (is (= "345" (middle-3 1234567))) + (is (= "123" (middle-3 -123))) + (is (thrown-with-msg? Exception #"too short" (middle-3 1))) + (is (thrown-with-msg? Exception #"even number of digits" (middle-3 10))))) |
