Skip to content

Commit e22cb1d

Browse files
Solve day 13, part 1
1 parent 1e7b392 commit e22cb1d

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

day-13.clj

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
(ns day-13 (:require [hashp.core]))
2+
3+
(def parse-int #(Long/parseLong %))
4+
(def input (slurp "input13.txt"))
5+
(comment (def input "939
6+
7,13,x,x,59,x,31,19"))
7+
8+
(defn departure-times [bus]
9+
{:id bus :times (reductions + 0 (repeat bus))})
10+
11+
(defn departing-after [dep bus]
12+
(assoc bus :earliest (first (drop-while #(< % dep) (:times bus)))))
13+
14+
(defn puzzle1 [in]
15+
(let [[dep buses](clojure.string/split-lines in)
16+
dep (parse-int dep)
17+
buses (map parse-int (remove #{"x"} (clojure.string/split buses #",")))]
18+
(->> buses
19+
(map departure-times)
20+
(map #(departing-after dep %))
21+
(apply min-key :earliest)
22+
(#(* (:id %) (- (:earliest %) dep))))))
23+
24+
(puzzle1 input)

input13.txt

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
1000186
2+
17,x,x,x,x,x,x,x,x,x,x,37,x,x,x,x,x,907,x,x,x,x,x,x,x,x,x,x,x,19,x,x,x,x,x,x,x,x,x,x,23,x,x,x,x,x,29,x,653,x,x,x,x,x,x,x,x,x,41,x,x,13

0 commit comments

Comments
 (0)