aboutsummaryrefslogtreecommitdiffstats
path: root/year2021/day12/part1.clj
diff options
context:
space:
mode:
Diffstat (limited to 'year2021/day12/part1.clj')
-rw-r--r--year2021/day12/part1.clj27
1 files changed, 27 insertions, 0 deletions
diff --git a/year2021/day12/part1.clj b/year2021/day12/part1.clj
new file mode 100644
index 0000000..cdd4a43
--- /dev/null
+++ b/year2021/day12/part1.clj
@@ -0,0 +1,27 @@
+(require '[clojure.string :as str])
+
+(def caves (->> (slurp "./in")
+ (str/split-lines)
+ (map #(str/split % #"-"))
+ (map (partial map str))
+ (#(concat % (map reverse %)))
+ ))
+
+(defn get-caves-forward [klst]
+ (map #(cons (second %) klst)
+ (filter
+ #(or (< (int (first (second %))) 96)
+ (not-any? (partial = (second %)) klst))
+ (filter #(= (first %) (first klst)) caves)
+ )))
+
+(loop [lst (get-caves-forward ["start"]) ms '()]
+ (let [nxt (->> lst
+ (map get-caves-forward)
+ (apply concat))
+ mtchs (concat ms (filter #(= (first %) "end") nxt))
+ nxtlst (filter #(not= (first %) "end") nxt)]
+ (if (empty? nxtlst)
+ (println (count mtchs))
+ (recur nxtlst mtchs))))
+