do day 12
This commit is contained in:
@@ -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))))
|
||||
Reference in New Issue
Block a user