aboutsummaryrefslogtreecommitdiff
path: root/challenge-160
diff options
context:
space:
mode:
authorTyler Wardhaugh <tyler.wardhaugh@gmail.com>2022-04-16 16:17:31 -0700
committerTyler Wardhaugh <tyler.wardhaugh@gmail.com>2022-04-16 16:17:31 -0700
commitaf2cfddc99dda318b714d75b04f33b5c14b982d2 (patch)
tree4bbb6145cc806ae3f7593d2905dbfcf432a3098a /challenge-160
parent7724b02c881db2c18e9c6469105b50e67fae37aa (diff)
downloadperlweeklychallenge-club-af2cfddc99dda318b714d75b04f33b5c14b982d2.tar.gz
perlweeklychallenge-club-af2cfddc99dda318b714d75b04f33b5c14b982d2.tar.bz2
perlweeklychallenge-club-af2cfddc99dda318b714d75b04f33b5c14b982d2.zip
Ch160 (Clojure): Task 2
Diffstat (limited to 'challenge-160')
-rw-r--r--challenge-160/tyler-wardhaugh/clojure/src/c160/t2.clj20
-rw-r--r--challenge-160/tyler-wardhaugh/clojure/test/c160/t2_test.clj6
2 files changed, 20 insertions, 6 deletions
diff --git a/challenge-160/tyler-wardhaugh/clojure/src/c160/t2.clj b/challenge-160/tyler-wardhaugh/clojure/src/c160/t2.clj
index 06cadecda7..cb7dcc56e3 100644
--- a/challenge-160/tyler-wardhaugh/clojure/src/c160/t2.clj
+++ b/challenge-160/tyler-wardhaugh/clojure/src/c160/t2.clj
@@ -1,12 +1,24 @@
(ns c160.t2
- (:require [clojure.edn :as edn]
- [clojure.pprint :refer [cl-format]]))
+ (:require [clojure.edn :as edn]))
-(def DEFAULT-INPUT [])
+(def DEFAULT-INPUT [[1 3 5 7 9]])
+
+(defn splits
+ [coll]
+ (let [v (vec coll)
+ len (count v)]
+ (->> (range len)
+ (map (fn [i] [i (subvec v 0 i) (subvec v (inc i) len)])))))
+
+(defn equilibrium-index
+ [coll]
+ (let [source (splits coll)
+ xf (keep (fn [[i a b]] (when (= (reduce + a) (reduce + b)) i)))]
+ (transduce xf (completing #(reduced %2)) -1 source)))
(defn -main
"Run Task 2 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)]
- ))
+ (println (equilibrium-index N))))
diff --git a/challenge-160/tyler-wardhaugh/clojure/test/c160/t2_test.clj b/challenge-160/tyler-wardhaugh/clojure/test/c160/t2_test.clj
index 32273d0178..a15c6ce81e 100644
--- a/challenge-160/tyler-wardhaugh/clojure/test/c160/t2_test.clj
+++ b/challenge-160/tyler-wardhaugh/clojure/test/c160/t2_test.clj
@@ -1,7 +1,9 @@
(ns c160.t2-test
(:require [clojure.test :refer [deftest is testing]]
- [c160.t2 :refer []]))
+ [c160.t2 :refer [equilibrium-index]]))
(deftest task-2
(testing "Task 2 produces the correct result"
- ))
+ (is (= 3 (equilibrium-index [1 3 5 7 9])))
+ (is (= -1 (equilibrium-index [1 2 3 4 5])))
+ (is (= 1 (equilibrium-index [2 4 2])))))