do day 12

This commit is contained in:
Adam Jeniski
2026-05-15 09:27:46 -04:00
parent e6357d9802
commit a1db8ae128
+34
View File
@@ -0,0 +1,34 @@
(ns day12
(:require
[clojure.string :as str]
core
input-manager
[clojure.set :refer [difference]]))
(def input (->> (input-manager/get-input 2017 12)
(map #(str/replace % #"," ""))
(map core/split-whitespace)
(map (fn [[a _ & rst]]
[(parse-long a) (mapv parse-long rst)]))
(into {})))
(defn group-from-start [start]
(loop [visited #{}
queue [start]]
(if-not (seq queue)
visited
(let [[curr & rst] queue
ns (filter (complement visited) (input curr))]
(recur (into visited ns)
(concat rst ns))))))
;; part one
(count (group-from-start 0))
;; part two
(loop [ks (into #{} (keys input))
i 0]
(if-not (seq ks)
i
(recur (difference ks (group-from-start (first ks)))
(inc i))))