diff options
| author | Tyler Wardhaugh <tyler.wardhaugh@gmail.com> | 2020-10-01 10:18:48 -0700 |
|---|---|---|
| committer | Tyler Wardhaugh <tyler.wardhaugh@gmail.com> | 2020-10-01 13:31:05 -0700 |
| commit | 6ee7fd41be52d089f3aff1a9f211da73565ad35a (patch) | |
| tree | 9ed5d6765d579afc23f5c8fe442c5957e1a800ae | |
| parent | 75e3cdb13bd64a8a414eca37c8dccadff8c3ae59 (diff) | |
| download | perlweeklychallenge-club-6ee7fd41be52d089f3aff1a9f211da73565ad35a.tar.gz perlweeklychallenge-club-6ee7fd41be52d089f3aff1a9f211da73565ad35a.tar.bz2 perlweeklychallenge-club-6ee7fd41be52d089f3aff1a9f211da73565ad35a.zip | |
Ch80/Task 1 (clj): add third algorithm
Also add benchmarking for this newest algorithm.
| -rw-r--r-- | challenge-080/tyler-wardhaugh/clojure/src/tw/weekly/c80/t1.clj | 12 | ||||
| -rw-r--r-- | challenge-080/tyler-wardhaugh/clojure/src/tw/weekly/c80/t1_bench.clj | 13 |
2 files changed, 18 insertions, 7 deletions
diff --git a/challenge-080/tyler-wardhaugh/clojure/src/tw/weekly/c80/t1.clj b/challenge-080/tyler-wardhaugh/clojure/src/tw/weekly/c80/t1.clj index ed1cc0d665..440d3cb7df 100644 --- a/challenge-080/tyler-wardhaugh/clojure/src/tw/weekly/c80/t1.clj +++ b/challenge-080/tyler-wardhaugh/clojure/src/tw/weekly/c80/t1.clj @@ -9,7 +9,7 @@ ;Write a script to find out the smallest positive number missing. ;;;; -(defn smallest-missing-by-set +(defn smallest-missing-by-set-intersection "Determine the smallest positive integer missing in a sequence (by set difference)." [coll] (if-let [missing (->> coll @@ -30,7 +30,15 @@ (inc (last sorted))) 1)) -(def smallest-missing smallest-missing-by-sorting) +(defn smallest-missing-by-set-membership + "Determine the smallest positive integer missing in a sequence (by set membership)." + [coll] + (let [scoll (->> coll (filter pos-int?) set)] + (->> (iterate inc 1) + (remove scoll) + first))) + +(def smallest-missing smallest-missing-by-set-membership) (defn -main "Run Task 1 with a list of integers N, defaulting to the first one given in the examples." diff --git a/challenge-080/tyler-wardhaugh/clojure/src/tw/weekly/c80/t1_bench.clj b/challenge-080/tyler-wardhaugh/clojure/src/tw/weekly/c80/t1_bench.clj index 14331d11f0..35c7d2b4f2 100644 --- a/challenge-080/tyler-wardhaugh/clojure/src/tw/weekly/c80/t1_bench.clj +++ b/challenge-080/tyler-wardhaugh/clojure/src/tw/weekly/c80/t1_bench.clj @@ -7,10 +7,13 @@ (defn -main [& _] (doseq [t [[1 -2 8] [1 2 3] [1 2 3 (int 1e7)]]] - (cl-format true "Benchmarking ~a by-set:~%" t) - (cc/quick-bench (t1/smallest-missing-by-set t)) + (cl-format true "~2%===~a~60,1,0,'=a" t "=") - (Thread/sleep 1000) + (cl-format true "~2%Benchmarking ~a by set-intersection:~%" t) + (cc/quick-bench (t1/smallest-missing-by-set-intersection t)) - (cl-format true "Benchmarking ~a by-sorting~%" t) - (cc/quick-bench (t1/smallest-missing-by-sorting t)))) + (cl-format true "~2%Benchmarking ~a by sorting:~%" t) + (cc/quick-bench (t1/smallest-missing-by-sorting t)) + + (cl-format true "~2%Benchmarking ~a by set-membership:~%" t) + (cc/quick-bench (t1/smallest-missing-by-set-membership t)))) |
