diff options
| author | Tyler Wardhaugh <tyler.wardhaugh@gmail.com> | 2021-11-19 22:25:31 -0800 |
|---|---|---|
| committer | Tyler Wardhaugh <tyler.wardhaugh@gmail.com> | 2021-11-21 07:54:29 -0800 |
| commit | 543f988df5e6a221a3c990eec574dd7085debd40 (patch) | |
| tree | f62f4ad74f1020fd6e6a1fabdef79a38aba6aeb0 /challenge-139 | |
| parent | d4af8e63ed8bb83070c498dc3b8fd874ad19e438 (diff) | |
| download | perlweeklychallenge-club-543f988df5e6a221a3c990eec574dd7085debd40.tar.gz perlweeklychallenge-club-543f988df5e6a221a3c990eec574dd7085debd40.tar.bz2 perlweeklychallenge-club-543f988df5e6a221a3c990eec574dd7085debd40.zip | |
Ch139 (Clojure): Task 2
Diffstat (limited to 'challenge-139')
3 files changed, 34 insertions, 4 deletions
diff --git a/challenge-139/tyler-wardhaugh/clojure/deps.edn b/challenge-139/tyler-wardhaugh/clojure/deps.edn index 5b1400b27e..3386938e59 100644 --- a/challenge-139/tyler-wardhaugh/clojure/deps.edn +++ b/challenge-139/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"} + com.hypirion/primes {:mvn/version "0.2.2"}} :aliases {:test {:extra-paths ["test"] :extra-deps {org.clojure/test.check {:mvn/version "1.1.0"} diff --git a/challenge-139/tyler-wardhaugh/clojure/src/tw/weekly/c139/t2.clj b/challenge-139/tyler-wardhaugh/clojure/src/tw/weekly/c139/t2.clj index cb59f2c64e..737d6ea02b 100644 --- a/challenge-139/tyler-wardhaugh/clojure/src/tw/weekly/c139/t2.clj +++ b/challenge-139/tyler-wardhaugh/clojure/src/tw/weekly/c139/t2.clj @@ -1,10 +1,35 @@ (ns tw.weekly.c139.t2 - (:require [clojure.edn :as edn])) + (:require [com.hypirion.primes :as p])) ;;; ; Task description for TASK #2 › Long Primes ;;; +(def BASE 10) + +(defn cyclic? + [n] + (let [s (str n) + len (count s) + ndigits (set s) + ndigits' (conj ndigits \0) + f (fn [x] (let [odigits (-> x str set)] + (or (= ndigits odigits) (= ndigits' odigits))))] + (every? f (map #(* n %) (range 2 len))))) + +(defn long-prime? + [n] + (-> (biginteger BASE) + (.pow (dec n)) + (.subtract (biginteger 1)) + (.divide (biginteger n)) + cyclic?)) + +(defn long-primes + [] + (let [xf (comp (drop 2) (filter long-prime?) (take 5))] + (sequence xf (p/primes)))) (defn -main "Run Task 2." - [& _]) + [& _] + (long-primes)) diff --git a/challenge-139/tyler-wardhaugh/clojure/test/tw/weekly/c139/t2_test.clj b/challenge-139/tyler-wardhaugh/clojure/test/tw/weekly/c139/t2_test.clj index 02cd77de88..b05222cb04 100644 --- a/challenge-139/tyler-wardhaugh/clojure/test/tw/weekly/c139/t2_test.clj +++ b/challenge-139/tyler-wardhaugh/clojure/test/tw/weekly/c139/t2_test.clj @@ -1,3 +1,7 @@ (ns tw.weekly.c139.t2-test (:require [clojure.test :refer [deftest is testing]] - [tw.weekly.c139.t2 :refer []])) + [tw.weekly.c139.t2 :refer [long-primes]])) + +(deftest examples + (testing "Examples from description" + (is (= [7 17 19 23 29] (long-primes))))) |
