aboutsummaryrefslogtreecommitdiff
path: root/challenge-139
diff options
context:
space:
mode:
authorTyler Wardhaugh <tyler.wardhaugh@gmail.com>2021-11-19 22:25:31 -0800
committerTyler Wardhaugh <tyler.wardhaugh@gmail.com>2021-11-21 07:54:29 -0800
commit543f988df5e6a221a3c990eec574dd7085debd40 (patch)
treef62f4ad74f1020fd6e6a1fabdef79a38aba6aeb0 /challenge-139
parentd4af8e63ed8bb83070c498dc3b8fd874ad19e438 (diff)
downloadperlweeklychallenge-club-543f988df5e6a221a3c990eec574dd7085debd40.tar.gz
perlweeklychallenge-club-543f988df5e6a221a3c990eec574dd7085debd40.tar.bz2
perlweeklychallenge-club-543f988df5e6a221a3c990eec574dd7085debd40.zip
Ch139 (Clojure): Task 2
Diffstat (limited to 'challenge-139')
-rw-r--r--challenge-139/tyler-wardhaugh/clojure/deps.edn3
-rw-r--r--challenge-139/tyler-wardhaugh/clojure/src/tw/weekly/c139/t2.clj29
-rw-r--r--challenge-139/tyler-wardhaugh/clojure/test/tw/weekly/c139/t2_test.clj6
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)))))