diff options
Diffstat (limited to 'year2021/day12/part1.clj')
-rw-r--r-- | year2021/day12/part1.clj | 27 |
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)))) + |