From b4996ab769ec193cea59e054ab2282e972cd3690 Mon Sep 17 00:00:00 2001 From: Tyler Wardhaugh Date: Fri, 18 Mar 2022 17:07:48 -0700 Subject: Ch156 (Clojure): prep for challenge --- challenge-156/tyler-wardhaugh/clojure/README.md | 11 +++++++---- challenge-156/tyler-wardhaugh/clojure/bb.edn | 2 +- challenge-156/tyler-wardhaugh/clojure/build.clj | 19 +++++++++++++++++++ challenge-156/tyler-wardhaugh/clojure/deps.edn | 7 +++---- challenge-156/tyler-wardhaugh/clojure/src/c156/t1.clj | 6 ++++++ challenge-156/tyler-wardhaugh/clojure/src/c156/t2.clj | 7 +++++++ .../tyler-wardhaugh/clojure/test/c156/t1_test.clj | 7 +++++++ .../tyler-wardhaugh/clojure/test/c156/t2_test.clj | 7 +++++++ 8 files changed, 57 insertions(+), 9 deletions(-) create mode 100644 challenge-156/tyler-wardhaugh/clojure/build.clj create mode 100644 challenge-156/tyler-wardhaugh/clojure/src/c156/t1.clj create mode 100644 challenge-156/tyler-wardhaugh/clojure/src/c156/t2.clj create mode 100644 challenge-156/tyler-wardhaugh/clojure/test/c156/t1_test.clj create mode 100644 challenge-156/tyler-wardhaugh/clojure/test/c156/t2_test.clj diff --git a/challenge-156/tyler-wardhaugh/clojure/README.md b/challenge-156/tyler-wardhaugh/clojure/README.md index 0172d72218..e86eb6e777 100644 --- a/challenge-156/tyler-wardhaugh/clojure/README.md +++ b/challenge-156/tyler-wardhaugh/clojure/README.md @@ -1,6 +1,6 @@ # c154 -The Weekly Challenge — #154 — Tyler Wardhaugh +The Weekly Challenge — #156 — Tyler Wardhaugh ## Usage @@ -12,14 +12,17 @@ Run Task #1: # ... or ... $ bb run task-1 + # Alternatively, to run it via Babashka: + $ bb run task-1-bb + Run Task #2: - $ clojure -M:t2 + $ clojure -M:t2 N # ... or ... - $ bb run task-2 + $ bb run task-2 N # Alternatively, to run it via Babashka: - $ bb run task-2-bb + $ bb run task-2-bb N Run the project's tests (which are samples from the task descriptions): diff --git a/challenge-156/tyler-wardhaugh/clojure/bb.edn b/challenge-156/tyler-wardhaugh/clojure/bb.edn index 6d0b679197..e21cd63a1e 100644 --- a/challenge-156/tyler-wardhaugh/clojure/bb.edn +++ b/challenge-156/tyler-wardhaugh/clojure/bb.edn @@ -72,7 +72,7 @@ :task (run-task-clj :t1 *command-line-args*)} task-1-bb {:doc "Run Task 1 (via Babashka)" - :task (bb-no-go :t1 *command-line-args*)} + :task (run-task-bb :t1 *command-line-args*)} task-2 {:doc "Run Task 2 (via clojure)" :task (run-task-clj :t2 *command-line-args*)} diff --git a/challenge-156/tyler-wardhaugh/clojure/build.clj b/challenge-156/tyler-wardhaugh/clojure/build.clj new file mode 100644 index 0000000000..937053b000 --- /dev/null +++ b/challenge-156/tyler-wardhaugh/clojure/build.clj @@ -0,0 +1,19 @@ +(ns build + (:refer-clojure :exclude [test]) + (:require [org.corfield.build :as bb])) + +(def lib 'net.clojars.c156/c156) +(def version "0.1.0-SNAPSHOT") +(def main 'c156.c156) + +(defn test "Run the tests." [opts] + (bb/run-tests opts)) + +(def clean bb/clean) + +(defn ci "Run the CI pipeline of tests (and build the uberjar)." [opts] + (-> opts + (assoc :lib lib :version version :main main) + (bb/run-tests) + (bb/clean) + (bb/uber))) diff --git a/challenge-156/tyler-wardhaugh/clojure/deps.edn b/challenge-156/tyler-wardhaugh/clojure/deps.edn index d647404dd7..616765131d 100644 --- a/challenge-156/tyler-wardhaugh/clojure/deps.edn +++ b/challenge-156/tyler-wardhaugh/clojure/deps.edn @@ -1,9 +1,8 @@ {:paths ["src" "resources"] - :deps {org.clojure/clojure {:mvn/version "1.11.0-rc1"} - org.clojure/math.combinatorics {:mvn/version "0.1.6"}} + :deps {org.clojure/clojure {:mvn/version "1.11.0-rc1"}} :aliases - {:t1 {:main-opts ["-m" "c154.t1"]} - :t2 {:main-opts ["-m" "c154.t2"]} + {:t1 {:main-opts ["-m" "c156.t1"]} + :t2 {:main-opts ["-m" "c156.t2"]} :build {:deps {io.github.seancorfield/build-clj {:git/tag "v0.6.3" :git/sha "9b8e09b" ;; since we're building an app uberjar, we do not diff --git a/challenge-156/tyler-wardhaugh/clojure/src/c156/t1.clj b/challenge-156/tyler-wardhaugh/clojure/src/c156/t1.clj new file mode 100644 index 0000000000..c7c7c09117 --- /dev/null +++ b/challenge-156/tyler-wardhaugh/clojure/src/c156/t1.clj @@ -0,0 +1,6 @@ +(ns c156.t1 + (:require [clojure.pprint :refer [cl-format]])) + +(defn -main + "Run Task 1." + [& args]) diff --git a/challenge-156/tyler-wardhaugh/clojure/src/c156/t2.clj b/challenge-156/tyler-wardhaugh/clojure/src/c156/t2.clj new file mode 100644 index 0000000000..ef367a1124 --- /dev/null +++ b/challenge-156/tyler-wardhaugh/clojure/src/c156/t2.clj @@ -0,0 +1,7 @@ +(ns c156.t2 + (:require [clojure.pprint :refer [cl-format]])) + +(defn -main + "Run Task 2 with a given input N, defaulting to the first example from the + task description." + [& args]) diff --git a/challenge-156/tyler-wardhaugh/clojure/test/c156/t1_test.clj b/challenge-156/tyler-wardhaugh/clojure/test/c156/t1_test.clj new file mode 100644 index 0000000000..fb4361c2c7 --- /dev/null +++ b/challenge-156/tyler-wardhaugh/clojure/test/c156/t1_test.clj @@ -0,0 +1,7 @@ +(ns c156.t1-test + (:require [clojure.test :refer [deftest is testing]] + [c156.t1 :as t1])) + +(deftest task-1 + (testing "Task 1 produces the correct result" + )) diff --git a/challenge-156/tyler-wardhaugh/clojure/test/c156/t2_test.clj b/challenge-156/tyler-wardhaugh/clojure/test/c156/t2_test.clj new file mode 100644 index 0000000000..0c8409a741 --- /dev/null +++ b/challenge-156/tyler-wardhaugh/clojure/test/c156/t2_test.clj @@ -0,0 +1,7 @@ +(ns c156.t2-test + (:require [clojure.test :refer [deftest is testing]] + [c156.t2 :as t2])) + +(deftest task-2 + (testing "Task 2 produces the correct result" + )) -- cgit From 9522ceb405eaf8a4fa3ebf63df1d849256aa37b2 Mon Sep 17 00:00:00 2001 From: Tyler Wardhaugh Date: Fri, 18 Mar 2022 17:25:48 -0700 Subject: Ch156 (Clojure): Task 1 --- challenge-156/tyler-wardhaugh/clojure/src/c156/t1.clj | 8 +++++++- challenge-156/tyler-wardhaugh/clojure/test/c156/t1_test.clj | 7 +++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/challenge-156/tyler-wardhaugh/clojure/src/c156/t1.clj b/challenge-156/tyler-wardhaugh/clojure/src/c156/t1.clj index c7c7c09117..de60ed1c90 100644 --- a/challenge-156/tyler-wardhaugh/clojure/src/c156/t1.clj +++ b/challenge-156/tyler-wardhaugh/clojure/src/c156/t1.clj @@ -1,6 +1,12 @@ (ns c156.t1 (:require [clojure.pprint :refer [cl-format]])) +(defn pernicious? + [n] + (let [ones (BigInteger/valueOf (.bitCount (BigInteger/valueOf n)))] + (.isProbablePrime ones 1000))) + (defn -main "Run Task 1." - [& args]) + [& args] + (cl-format true "~{~a~^, ~}~%" (->> (range) (filter pernicious?) (take 10)))) diff --git a/challenge-156/tyler-wardhaugh/clojure/test/c156/t1_test.clj b/challenge-156/tyler-wardhaugh/clojure/test/c156/t1_test.clj index fb4361c2c7..c74bd3fa40 100644 --- a/challenge-156/tyler-wardhaugh/clojure/test/c156/t1_test.clj +++ b/challenge-156/tyler-wardhaugh/clojure/test/c156/t1_test.clj @@ -1,7 +1,10 @@ (ns c156.t1-test (:require [clojure.test :refer [deftest is testing]] - [c156.t1 :as t1])) + [c156.t1 :refer [pernicious?]])) + +; Expected Output, from https://theweeklychallenge.org/blog/perl-weekly-challenge-156/#TASK1 +(def EXPECTED [3, 5, 6, 7, 9, 10, 11, 12, 13, 14]) (deftest task-1 (testing "Task 1 produces the correct result" - )) + (is (= EXPECTED (->> (range) (filter pernicious?) (take 10)))))) -- cgit From 9c286415fd8e21d6d7cbf3e2fa357d72fff9b632 Mon Sep 17 00:00:00 2001 From: Tyler Wardhaugh Date: Sat, 19 Mar 2022 11:16:09 -0700 Subject: Ch156 (Clojure): Task 2 --- challenge-156/tyler-wardhaugh/clojure/README.md | 3 --- challenge-156/tyler-wardhaugh/clojure/bb.edn | 2 +- challenge-156/tyler-wardhaugh/clojure/deps.edn | 3 ++- .../tyler-wardhaugh/clojure/src/c156/t2.clj | 22 ++++++++++++++++++++-- .../tyler-wardhaugh/clojure/test/c156/t2_test.clj | 5 +++-- 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/challenge-156/tyler-wardhaugh/clojure/README.md b/challenge-156/tyler-wardhaugh/clojure/README.md index e86eb6e777..6ccda4438f 100644 --- a/challenge-156/tyler-wardhaugh/clojure/README.md +++ b/challenge-156/tyler-wardhaugh/clojure/README.md @@ -21,9 +21,6 @@ Run Task #2: # ... or ... $ bb run task-2 N - # Alternatively, to run it via Babashka: - $ bb run task-2-bb N - Run the project's tests (which are samples from the task descriptions): $ clojure -T:build test diff --git a/challenge-156/tyler-wardhaugh/clojure/bb.edn b/challenge-156/tyler-wardhaugh/clojure/bb.edn index e21cd63a1e..8e5e3b49c6 100644 --- a/challenge-156/tyler-wardhaugh/clojure/bb.edn +++ b/challenge-156/tyler-wardhaugh/clojure/bb.edn @@ -78,6 +78,6 @@ :task (run-task-clj :t2 *command-line-args*)} task-2-bb {:doc "Run Task 2 (via Babashka)" - :task (run-task-bb :t2 *command-line-args*)} + :task (bb-no-go :t2 *command-line-args*)} } } diff --git a/challenge-156/tyler-wardhaugh/clojure/deps.edn b/challenge-156/tyler-wardhaugh/clojure/deps.edn index 616765131d..138cff091a 100644 --- a/challenge-156/tyler-wardhaugh/clojure/deps.edn +++ b/challenge-156/tyler-wardhaugh/clojure/deps.edn @@ -1,5 +1,6 @@ {:paths ["src" "resources"] - :deps {org.clojure/clojure {:mvn/version "1.11.0-rc1"}} + :deps {org.clojure/clojure {:mvn/version "1.11.0-rc1"} + org.clojure/math.combinatorics {:mvn/version "0.1.6"}} :aliases {:t1 {:main-opts ["-m" "c156.t1"]} :t2 {:main-opts ["-m" "c156.t2"]} diff --git a/challenge-156/tyler-wardhaugh/clojure/src/c156/t2.clj b/challenge-156/tyler-wardhaugh/clojure/src/c156/t2.clj index ef367a1124..1e295bf40d 100644 --- a/challenge-156/tyler-wardhaugh/clojure/src/c156/t2.clj +++ b/challenge-156/tyler-wardhaugh/clojure/src/c156/t2.clj @@ -1,7 +1,25 @@ (ns c156.t2 - (:require [clojure.pprint :refer [cl-format]])) + (:require [clojure.edn :as edn] + [clojure.math.combinatorics :as combo])) + +(def DEFAULT-INPUT [12]) + +(defn proper-divisors + [n] + (->> (range 2 n) (filter #(zero? (rem n %))))) + +(defn weird? + [n] + (let [divs (proper-divisors n)] + (and + (> (reduce + divs) n) + (not-any? + #{n} + (->> (combo/subsets divs) (map #(reduce + %))))))) (defn -main "Run Task 2 with a given input N, defaulting to the first example from the task description." - [& args]) + [& args] + (let [[N] (or (some->> args (map edn/read-string)) DEFAULT-INPUT)] + (println (if (weird? N) 1 0)))) diff --git a/challenge-156/tyler-wardhaugh/clojure/test/c156/t2_test.clj b/challenge-156/tyler-wardhaugh/clojure/test/c156/t2_test.clj index 0c8409a741..14c3bb455f 100644 --- a/challenge-156/tyler-wardhaugh/clojure/test/c156/t2_test.clj +++ b/challenge-156/tyler-wardhaugh/clojure/test/c156/t2_test.clj @@ -1,7 +1,8 @@ (ns c156.t2-test (:require [clojure.test :refer [deftest is testing]] - [c156.t2 :as t2])) + [c156.t2 :refer [weird?]])) (deftest task-2 (testing "Task 2 produces the correct result" - )) + (is (false? (weird? 12))) + (is (true? (weird? 70))))) -- cgit