From 543f988df5e6a221a3c990eec574dd7085debd40 Mon Sep 17 00:00:00 2001 From: Tyler Wardhaugh Date: Fri, 19 Nov 2021 22:25:31 -0800 Subject: Ch139 (Clojure): Task 2 --- challenge-139/tyler-wardhaugh/clojure/deps.edn | 3 ++- .../clojure/src/tw/weekly/c139/t2.clj | 29 ++++++++++++++++++++-- .../clojure/test/tw/weekly/c139/t2_test.clj | 6 ++++- 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))))) -- cgit