aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Wardhaugh <tyler.wardhaugh@gmail.com>2020-10-14 10:29:10 -0700
committerTyler Wardhaugh <tyler.wardhaugh@gmail.com>2020-10-14 17:05:04 -0700
commitf7bcdd4005929c02b722029a7621018d7694b6c9 (patch)
tree64258b8fc127d7e012d74f75114da13cb839fdf4
parentc0bc7cca5b312832af50c6f03dac2565b58bac4c (diff)
downloadperlweeklychallenge-club-f7bcdd4005929c02b722029a7621018d7694b6c9.tar.gz
perlweeklychallenge-club-f7bcdd4005929c02b722029a7621018d7694b6c9.tar.bz2
perlweeklychallenge-club-f7bcdd4005929c02b722029a7621018d7694b6c9.zip
Ch82/Task 1: improve algorithm using gcd(m, n)
One of the great things about the PWC is seeing others' code and gleaning insights from them.
-rw-r--r--challenge-082/tyler-wardhaugh/clojure/deps.edn3
-rw-r--r--challenge-082/tyler-wardhaugh/clojure/pom.xml5
-rw-r--r--challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/t1.clj11
3 files changed, 13 insertions, 6 deletions
diff --git a/challenge-082/tyler-wardhaugh/clojure/deps.edn b/challenge-082/tyler-wardhaugh/clojure/deps.edn
index 4010bedaeb..c692c74c45 100644
--- a/challenge-082/tyler-wardhaugh/clojure/deps.edn
+++ b/challenge-082/tyler-wardhaugh/clojure/deps.edn
@@ -1,5 +1,6 @@
{:paths ["src" "resources"]
- :deps {org.clojure/clojure {:mvn/version "1.10.1"}}
+ :deps {org.clojure/clojure {:mvn/version "1.10.1"}
+ org.clojure/math.numeric-tower {:mvn/version "0.0.4"}}
:aliases
{:test {:extra-paths ["test"]
:extra-deps {org.clojure/test.check {:mvn/version "1.0.0"}}}
diff --git a/challenge-082/tyler-wardhaugh/clojure/pom.xml b/challenge-082/tyler-wardhaugh/clojure/pom.xml
index 6fead6ac04..92eb55d64a 100644
--- a/challenge-082/tyler-wardhaugh/clojure/pom.xml
+++ b/challenge-082/tyler-wardhaugh/clojure/pom.xml
@@ -30,6 +30,11 @@
<artifactId>clojure</artifactId>
<version>1.10.1</version>
</dependency>
+ <dependency>
+ <groupId>org.clojure</groupId>
+ <artifactId>math.numeric-tower</artifactId>
+ <version>0.0.4</version>
+ </dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
diff --git a/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/t1.clj b/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/t1.clj
index 1b2713d772..7d7e3288c7 100644
--- a/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/t1.clj
+++ b/challenge-082/tyler-wardhaugh/clojure/src/tw/weekly/c82/t1.clj
@@ -1,5 +1,6 @@
(ns tw.weekly.c82.t1
- (:require [clojure.edn :as edn]))
+ (:require [clojure.edn :as edn])
+ (:require [clojure.math.numeric-tower :as math]))
;;; Task description for TASK #1 › Common Factors
; Submitted by: Niels van Dijke
@@ -11,10 +12,10 @@
(defn common-factors
"Determine the common factors for m and n."
[m n]
- (let [[m n] (sort [m n])
- source (concat (range 1 (inc (quot n 2))) [n])
- xf (filter (fn [x] (= 0 (rem n x) (rem m x))))]
- (into (sorted-set) xf source)))
+ (let [gcd (math/gcd m n)
+ source (range 1 (inc (quot gcd 2)))
+ xf (filter (fn [x] (zero? (rem gcd x))))]
+ (into (sorted-set gcd) xf source)))
(defn -main
"Run Task 1 with two strings A and B, defaulting to the first example given in the task description."