From c149e824df653422443e3eff5fa2be4954b43f86 Mon Sep 17 00:00:00 2001 From: Tyler Wardhaugh Date: Fri, 2 Sep 2022 22:29:39 -0700 Subject: Ch180 (Clojure): Task 1 --- challenge-180/tyler-wardhaugh/clojure/README.md | 6 +++--- challenge-180/tyler-wardhaugh/clojure/src/c180/t1.clj | 11 ++++++++--- challenge-180/tyler-wardhaugh/clojure/test/c180/t1_test.clj | 5 +++-- 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"))))) -- cgit