From a1db8ae128485b1f77d6133c36e7a8d5869a1697 Mon Sep 17 00:00:00 2001 From: Adam Jeniski Date: Fri, 15 May 2026 09:27:46 -0400 Subject: [PATCH] do day 12 --- 2017/src/day12.clj | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 2017/src/day12.clj diff --git a/2017/src/day12.clj b/2017/src/day12.clj new file mode 100644 index 0000000..8718bda --- /dev/null +++ b/2017/src/day12.clj @@ -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))))