aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Wardhaugh <tyler.wardhaugh@gmail.com>2022-09-02 22:29:39 -0700
committerTyler Wardhaugh <tyler.wardhaugh@gmail.com>2022-09-03 17:51:31 -0700
commitc149e824df653422443e3eff5fa2be4954b43f86 (patch)
treeef57aa0322b6b16b3f6557a9ff13059b9faa3867
parentd7cc6a08e8d05f629f3d896fa199c163b4fbc425 (diff)
downloadperlweeklychallenge-club-c149e824df653422443e3eff5fa2be4954b43f86.tar.gz
perlweeklychallenge-club-c149e824df653422443e3eff5fa2be4954b43f86.tar.bz2
perlweeklychallenge-club-c149e824df653422443e3eff5fa2be4954b43f86.zip
Ch180 (Clojure): Task 1
-rw-r--r--challenge-180/tyler-wardhaugh/clojure/README.md6
-rw-r--r--challenge-180/tyler-wardhaugh/clojure/src/c180/t1.clj11
-rw-r--r--challenge-180/tyler-wardhaugh/clojure/test/c180/t1_test.clj5
3 files changed, 14 insertions, 8 deletions
diff --git a/challenge-180/tyler-wardhaugh/clojure/README.md b/challenge-180/tyler-wardhaugh/clojure/README.md
index fa2b4d1884..97a81353be 100644
--- a/challenge-180/tyler-wardhaugh/clojure/README.md
+++ b/challenge-180/tyler-wardhaugh/clojure/README.md
@@ -8,12 +8,12 @@ Clojure ([installation instructions](https://clojure.org/guides/getting_started#
Run Task #1:
- $ clojure -M:t1 N
+ $ clojure -M:t1 S
# ... or ...
- $ bb run task-1 N
+ $ bb run task-1 S
# Alternatively, to run it via Babashka:
- $ bb run task-1-bb N
+ $ bb run task-1-bb S
Run Task #2:
diff --git a/challenge-180/tyler-wardhaugh/clojure/src/c180/t1.clj b/challenge-180/tyler-wardhaugh/clojure/src/c180/t1.clj
index fc36df92d2..a07103cc41 100644
--- a/challenge-180/tyler-wardhaugh/clojure/src/c180/t1.clj
+++ b/challenge-180/tyler-wardhaugh/clojure/src/c180/t1.clj
@@ -1,11 +1,16 @@
(ns c180.t1
(:require [clojure.edn :as edn]))
-(def DEFAULT-INPUT [])
+(def DEFAULT-INPUT ["Perl Weekly Challenge"])
+
+(defn first-unique-char
+ [s]
+ (let [freq (frequencies s)]
+ (->> s (keep-indexed (fn [i v] (when (= 1 (freq v)) i))) first)))
(defn -main
"Run Task 1 with a given input N, defaulting to the first example from the
task description."
[& args]
- (let [[N] (or (some->> args (map edn/read-string)) DEFAULT-INPUT)]
- N))
+ (let [[N] (or args DEFAULT-INPUT)]
+ (println (first-unique-char N))))
diff --git a/challenge-180/tyler-wardhaugh/clojure/test/c180/t1_test.clj b/challenge-180/tyler-wardhaugh/clojure/test/c180/t1_test.clj
index 469e72389f..6824dff4d4 100644
--- a/challenge-180/tyler-wardhaugh/clojure/test/c180/t1_test.clj
+++ b/challenge-180/tyler-wardhaugh/clojure/test/c180/t1_test.clj
@@ -1,7 +1,8 @@
(ns c180.t1-test
(:require [clojure.test :refer [deftest is testing]]
- [c180.t1 :refer []]))
+ [c180.t1 :refer [first-unique-char]]))
(deftest task-1
(testing "Task 1 produces the correct result"
- ))
+ (is (zero? (first-unique-char "Perl Weekly Challenge")))
+ (is (= 1 (first-unique-char "Long Live Perl")))))