/
day18.clj
51 lines (45 loc) · 19.6 KB
/
day18.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
(ns aoc.day18
[:require [clojure.string :as str]
[clojure.set :as set]])
(def input "7,2,7\n12,2,8\n11,18,11\n7,6,3\n7,7,17\n9,15,2\n12,17,8\n12,8,3\n11,6,17\n8,18,10\n11,14,3\n16,14,8\n12,5,4\n7,4,14\n10,3,15\n4,16,7\n14,13,15\n13,17,8\n8,17,13\n3,14,12\n7,17,11\n3,15,12\n5,12,15\n17,8,10\n8,17,9\n3,12,11\n16,12,7\n12,4,8\n12,10,1\n7,12,17\n15,12,11\n9,5,15\n9,17,8\n8,13,3\n8,15,5\n5,7,14\n9,2,13\n3,9,8\n11,4,12\n5,10,14\n7,8,2\n9,3,4\n10,12,2\n9,5,16\n7,14,16\n14,18,11\n6,14,16\n4,13,10\n6,10,17\n9,9,18\n12,4,6\n2,8,13\n4,6,12\n17,13,7\n16,7,7\n8,6,16\n15,6,12\n11,16,12\n9,1,8\n13,16,9\n16,13,10\n15,7,4\n9,15,16\n9,17,6\n3,12,6\n12,14,15\n12,1,8\n5,8,4\n10,18,11\n12,4,3\n13,12,3\n3,5,7\n15,6,6\n16,11,16\n4,13,6\n3,4,10\n13,12,2\n16,8,6\n12,17,9\n9,11,16\n9,17,12\n16,10,14\n16,9,6\n14,3,11\n9,8,19\n16,6,6\n4,3,11\n17,10,5\n17,13,11\n14,15,13\n13,5,4\n16,12,4\n13,15,15\n4,4,6\n16,7,14\n6,17,8\n9,17,9\n13,15,11\n14,16,10\n9,2,7\n17,10,8\n12,9,2\n9,11,18\n9,11,17\n16,6,9\n3,14,8\n4,4,7\n7,15,7\n8,7,17\n10,7,3\n14,10,14\n15,11,16\n7,3,13\n14,10,3\n13,10,2\n12,12,4\n4,8,4\n1,8,9\n11,13,2\n12,6,16\n11,10,17\n1,9,11\n5,16,10\n9,15,5\n3,9,7\n8,11,17\n10,2,10\n16,7,4\n10,18,9\n12,3,11\n10,11,1\n10,2,8\n13,7,15\n11,11,16\n2,13,5\n3,8,9\n14,3,6\n12,10,17\n7,1,10\n8,5,15\n11,15,4\n4,15,11\n12,2,12\n8,9,17\n15,14,6\n7,14,13\n8,4,5\n9,3,12\n4,16,12\n6,3,7\n9,3,13\n16,5,13\n10,1,10\n6,12,15\n11,7,16\n8,10,18\n10,17,7\n3,14,6\n3,8,5\n2,11,8\n13,4,4\n6,4,6\n8,16,13\n12,9,17\n7,12,2\n15,6,5\n15,5,11\n10,8,16\n4,13,7\n15,6,15\n5,12,3\n2,9,13\n2,8,10\n12,3,6\n7,3,14\n12,16,7\n10,17,13\n14,4,5\n5,15,15\n15,9,3\n11,2,12\n5,3,13\n6,15,15\n6,2,8\n9,5,2\n4,6,14\n15,14,8\n8,9,18\n7,5,12\n11,7,1\n10,15,16\n5,16,12\n4,12,14\n9,1,12\n9,1,13\n17,7,6\n4,7,13\n13,15,12\n5,14,13\n16,5,5\n14,7,7\n6,11,3\n8,11,1\n4,8,13\n5,2,8\n8,4,4\n12,3,7\n11,9,17\n4,10,5\n4,11,16\n15,8,14\n8,4,13\n14,8,3\n6,6,5\n8,3,8\n14,16,8\n7,10,1\n14,10,17\n15,11,15\n11,13,5\n5,9,3\n12,7,17\n16,8,16\n17,13,8\n11,9,3\n7,3,8\n17,14,9\n17,11,7\n6,16,11\n3,5,8\n12,5,3\n17,5,6\n14,9,16\n9,16,6\n9,7,2\n14,14,14\n14,15,10\n16,13,12\n8,3,4\n11,6,15\n1,10,11\n14,11,13\n9,17,13\n4,10,4\n9,2,6\n10,5,15\n10,4,16\n8,5,16\n6,14,15\n10,10,15\n13,2,8\n4,5,10\n3,13,7\n17,7,10\n16,12,6\n15,4,13\n7,14,3\n8,6,3\n5,13,13\n14,11,2\n6,4,11\n8,17,8\n5,16,9\n13,7,3\n16,9,14\n15,6,11\n9,14,6\n4,6,15\n3,8,14\n14,17,10\n3,13,11\n18,10,9\n10,16,13\n12,1,7\n14,12,10\n12,14,5\n16,7,13\n4,7,11\n9,9,1\n11,4,3\n6,4,8\n5,16,8\n15,11,6\n6,11,17\n9,15,15\n5,14,14\n8,10,17\n4,16,11\n3,13,4\n3,10,14\n9,5,4\n5,15,14\n6,8,2\n5,3,9\n4,9,5\n15,12,13\n11,16,6\n5,4,5\n11,15,9\n14,6,14\n17,8,7\n18,11,7\n10,4,4\n8,3,9\n4,13,13\n3,3,11\n16,9,5\n3,6,5\n6,13,3\n2,10,11\n11,15,3\n14,2,9\n10,12,18\n11,4,9\n5,13,14\n6,15,5\n7,15,14\n5,4,13\n1,7,9\n3,9,14\n11,11,17\n10,16,9\n7,17,9\n9,2,11\n8,8,2\n16,9,4\n3,6,7\n9,6,3\n5,12,16\n14,9,3\n12,13,2\n15,6,7\n7,5,3\n15,3,10\n7,2,9\n11,15,5\n15,16,10\n15,11,13\n10,4,5\n11,5,15\n1,13,7\n17,11,6\n7,13,15\n10,3,4\n8,1,9\n5,5,11\n17,8,6\n9,1,7\n9,2,12\n16,7,12\n9,12,18\n17,6,10\n14,7,8\n6,15,12\n13,9,17\n14,17,11\n13,7,4\n15,3,11\n11,5,16\n14,10,15\n11,0,10\n8,14,4\n12,14,7\n14,17,12\n13,13,13\n6,4,9\n5,16,15\n10,1,12\n10,9,18\n11,3,7\n17,10,14\n3,11,13\n15,4,6\n9,3,11\n5,10,4\n12,14,16\n3,10,13\n9,12,3\n6,16,13\n6,8,3\n5,4,8\n5,3,5\n15,13,9\n14,14,15\n13,13,3\n8,16,11\n5,11,5\n5,17,7\n5,5,7\n13,16,8\n18,12,11\n10,4,15\n6,14,6\n4,15,7\n7,5,4\n14,4,7\n16,12,9\n13,11,17\n2,9,8\n9,1,10\n11,5,3\n14,3,7\n11,14,13\n14,11,3\n2,11,11\n2,8,8\n14,8,16\n15,13,5\n5,7,2\n10,8,17\n11,6,2\n6,12,17\n14,6,5\n6,13,4\n10,18,7\n12,3,14\n2,10,12\n4,4,8\n5,8,14\n9,14,4\n4,5,8\n9,13,18\n3,11,6\n10,10,1\n13,5,15\n10,7,1\n14,9,4\n16,10,5\n15,4,12\n12,9,16\n2,10,10\n11,17,7\n15,9,4\n16,13,14\n15,8,5\n4,14,15\n6,3,10\n6,17,6\n5,11,3\n6,10,2\n10,7,17\n11,10,18\n12,7,16\n13,4,5\n13,15,9\n14,10,4\n16,4,8\n4,9,4\n14,8,15\n10,13,2\n8,11,3\n6,2,10\n8,8,16\n7,17,6\n1,8,11\n13,6,4\n10,3,14\n17,9,13\n16,5,9\n14,11,16\n3,5,14\n17,11,13\n2,9,12\n1,10,10\n16,7,11\n7,5,5\n9,13,5\n11,4,6\n2,7,13\n12,17,7\n7,3,7\n16,5,11\n9,12,1\n3,12,5\n16,5,6\n13,3,12\n7,14,4\n8,2,13\n12,16,14\n15,4,7\n15,15,11\n9,6,4\n3,9,15\n8,2,10\n15,4,10\n9,17,7\n4,4,9\n7,12,4\n11,16,13\n2,12,7\n11,10,2\n8,4,6\n11,2,11\n6,4,14\n9,16,4\n11,1,9\n11,9,1\n15,14,11\n4,6,4\n15,5,8\n16,14,7\n15,12,14\n15,4,11\n15,10,3\n13,12,17\n8,15,4\n6,5,14\n8,4,15\n1,8,8\n13,8,2\n10,16,15\n14,12,16\n15,16,9\n11,15,12\n16,8,7\n14,14,12\n5,8,2\n10,7,16\n5,17,10\n2,6,10\n8,14,17\n13,11,14\n6,10,16\n17,8,8\n6,9,3\n12,13,16\n13,3,10\n8,3,6\n6,7,17\n3,7,6\n12,2,9\n14,5,14\n13,6,16\n7,3,11\n2,12,9\n6,8,17\n14,15,12\n16,10,4\n17,5,12\n11,8,16\n3,13,9\n7,1,6\n9,7,18\n4,7,15\n5,15,4\n16,5,8\n12,16,5\n3,3,8\n13,17,9\n7,17,13\n16,8,5\n4,14,12\n14,4,6\n9,15,13\n10,3,13\n5,15,10\n16,14,9\n7,11,2\n7,12,6\n5,17,12\n3,15,9\n5,2,7\n3,8,13\n8,8,1\n3,14,7\n8,16,5\n3,7,9\n7,5,16\n12,14,3\n14,12,4\n4,2,9\n7,4,13\n17,6,7\n8,8,17\n13,16,6\n12,12,17\n5,8,15\n10,1,8\n9,10,2\n5,15,8\n12,2,7\n14,16,11\n4,6,13\n18,10,11\n15,12,5\n13,14,14\n5,3,8\n4,7,12\n13,18,10\n3,8,11\n7,12,16\n4,13,4\n5,3,7\n12,5,14\n10,2,12\n12,9,3\n10,13,3\n15,8,15\n4,8,15\n13,2,9\n14,17,7\n18,10,12\n12,5,5\n15,3,7\n8,3,14\n10,15,4\n11,7,4\n1,10,13\n6,6,4\n5,10,3\n18,11,11\n4,6,3\n7,5,15\n8,3,13\n8,10,3\n7,4,5\n8,17,10\n11,5,12\n4,5,16\n6,9,4\n15,7,3\n18,11,10\n9,6,17\n16,11,14\n7,8,17\n14,6,15\n13,12,16\n6,5,5\n6,9,15\n13,13,16\n16,13,7\n14,2,6\n16,5,7\n11,10,1\n18,8,11\n2,8,11\n17,14,11\n3,10,12\n13,7,17\n10,7,18\n5,10,17\n17,9,14\n5,7,16\n12,4,14\n9,13,16\n17,9,11\n1,9,13\n2,6,7\n13,15,16\n15,5,14\n12,16,8\n15,10,16\n7,7,16\n11,15,16\n16,10,12\n6,3,13\n2,12,11\n12,16,6\n11,5,4\n10,12,17\n17,6,15\n2,6,12\n12,7,5\n8,3,10\n12,5,16\n6,17,13\n14,4,4\n9,18,8\n5,16,13\n2,11,6\n6,16,7\n8,4,14\n11,12,2\n6,4,5\n14,8,4\n6,1,10\n12,4,16\n9,4,3\n18,8,10\n16,15,10\n5,9,16\n17,10,9\n17,7,9\n7,7,4\n3,10,5\n6,13,15\n11,16,10\n6,6,15\n9,14,17\n4,8,6\n4,4,12\n9,3,3\n7,16,12\n10,14,16\n4,15,6\n16,4,7\n8,6,2\n8,6,17\n16,13,13\n15,15,7\n18,8,8\n12,13,4\n14,13,4\n5,12,4\n15,12,15\n4,4,15\n5,8,17\n17,11,14\n13,16,13\n5,7,7\n8,13,16\n8,5,14\n16,15,8\n6,1,9\n11,18,7\n11,5,2\n9,4,4\n9,13,2\n7,17,7\n6,7,2\n17,10,6\n14,8,2\n7,16,6\n17,9,10\n16,14,6\n7,16,10\n7,3,10\n16,11,13\n6,13,16\n3,8,4\n12,15,5\n17,6,12\n18,9,11\n14,13,5\n15,8,16\n13,14,15\n17,8,13\n5,14,3\n8,13,17\n14,15,9\n8,14,16\n11,12,18\n15,5,10\n10,14,15\n14,7,15\n13,6,3\n3,14,9\n15,17,11\n1,12,9\n11,15,14\n6,16,6\n12,9,14\n11,18,10\n10,13,4\n13,17,11\n5,13,6\n10,1,7\n15,12,6\n12,12,15\n4,6,6\n3,5,13\n11,17,10\n5,14,8\n5,3,10\n13,13,17\n5,13,5\n15,5,12\n5,6,4\n12,15,14\n16,12,12\n12,17,10\n10,13,17\n8,13,1\n15,10,9\n17,13,9\n10,11,16\n8,12,17\n1,13,8\n13,8,3\n5,10,5\n14,5,15\n7,16,8\n7,9,15\n11,17,14\n12,17,11\n7,17,8\n13,10,17\n4,11,15\n3,11,8\n5,5,15\n11,9,18\n3,13,5\n11,14,4\n10,16,12\n7,3,4\n4,7,16\n8,15,16\n2,6,9\n2,13,7\n13,14,3\n6,9,18\n9,7,16\n13,15,13\n7,2,13\n5,11,4\n6,15,14\n18,11,8\n5,6,16\n12,17,5\n9,8,18\n7,4,11\n13,3,7\n7,11,18\n12,3,5\n15,12,4\n6,7,4\n14,13,12\n15,5,15\n9,17,10\n3,15,10\n17,10,11\n9,3,10\n9,13,15\n5,9,4\n16,9,7\n4,11,4\n5,15,16\n17,7,12\n12,6,3\n15,11,4\n13,6,5\n9,3,7\n8,8,18\n13,7,16\n13,16,12\n15,14,7\n6,6,2\n15,9,16\n5,4,6\n2,8,7\n13,17,12\n5,13,4\n11,15,15\n11,2,7\n16,11,9\n6,7,5\n9,9,17\n8,10,1\n9,14,3\n11,5,5\n14,9,5\n5,6,3\n10,2,11\n7,11,15\n16,14,10\n8,1,11\n16,6,13\n12,3,10\n12,4,10\n4,3,10\n9,11,2\n3,13,6\n5,16,7\n11,11,15\n7,17,10\n16,14,11\n16,14,12\n2,5,8\n3,6,10\n10,8,18\n7,4,6\n6,12,3\n15,15,6\n7,3,12\n9,1,9\n5,11,2\n15,5,6\n11,1,12\n17,9,8\n10,18,10\n2,7,11\n6,9,17\n6,12,4\n16,8,11\n15,5,13\n3,10,8\n16,11,12\n8,3,7\n7,2,10\n4,11,5\n16,13,6\n2,11,12\n4,15,9\n7,16,5\n3,11,12\n14,16,9\n2,10,13\n5,12,5\n16,6,11\n5,7,3\n13,11,3\n5,3,11\n14,14,7\n6,5,16\n5,11,17\n11,3,3\n9,10,18\n14,11,15\n12,5,15\n7,4,15\n16,10,10\n8,2,9\n14,6,17\n10,3,3\n5,14,11\n11,12,16\n14,5,9\n10,9,1\n10,3,10\n2,9,10\n7,3,6\n12,6,15\n9,18,9\n3,8,15\n3,4,11\n13,17,13\n5,5,14\n6,11,16\n5,4,9\n7,13,17\n14,6,3\n1,11,6\n5,11,14\n14,15,7\n3,11,14\n7,11,1\n16,8,12\n2,9,14\n13,5,2\n8,2,12\n4,4,11\n13,12,6\n8,6,15\n13,8,1\n17,12,6\n13,5,12\n16,9,8\n6,12,16\n13,7,1\n7,17,12\n5,13,7\n14,7,5\n10,2,7\n11,14,5\n11,16,11\n2,11,7\n9,18,7\n13,15,14\n8,2,14\n15,12,16\n10,7,2\n5,15,6\n7,13,3\n4,5,5\n18,11,9\n7,9,3\n0,10,10\n10,10,17\n16,10,11\n7,9,2\n3,7,8\n9,16,13\n11,13,3\n13,10,3\n9,5,17\n14,8,17\n11,1,8\n16,9,9\n15,6,13\n11,11,2\n10,16,11\n1,11,9\n0,11,9\n15,6,10\n1,5,10\n8,18,11\n7,15,15\n5,17,9\n5,5,4\n10,14,17\n9,6,14\n2,14,9\n6,16,10\n17,14,10\n10,2,5\n6,8,4\n9,18,12\n4,13,12\n4,5,6\n16,6,14\n3,9,11\n16,4,10\n13,5,14\n9,16,8\n14,4,14\n13,14,5\n5,5,6\n7,19,10\n7,6,16\n6,16,9\n8,13,2\n4,12,3\n17,7,8\n4,9,13\n3,5,6\n10,14,3\n4,14,9\n5,4,11\n5,2,9\n10,17,5\n5,10,15\n2,7,8\n3,5,5\n6,17,12\n9,16,11\n16,8,15\n3,5,11\n2,10,9\n9,9,2\n6,6,16\n13,14,12\n10,8,3\n11,6,16\n5,8,3\n3,6,8\n16,8,14\n11,3,4\n11,1,10\n6,12,2\n8,1,6\n5,6,15\n6,14,5\n17,15,10\n7,16,13\n11,2,5\n11,17,5\n15,13,7\n15,15,10\n5,11,16\n12,3,12\n2,12,8\n9,1,6\n11,5,14\n17,8,5\n7,14,15\n17,13,12\n9,15,14\n16,11,6\n8,11,2\n4,16,10\n14,17,9\n4,14,8\n9,18,11\n9,16,14\n10,15,12\n15,13,13\n17,9,7\n13,14,13\n1,12,11\n13,13,15\n13,15,8\n9,16,5\n11,12,17\n16,2,10\n17,12,12\n14,16,12\n10,17,12\n2,14,7\n7,10,2\n4,4,10\n6,16,4\n12,3,8\n6,7,3\n14,3,12\n13,2,10\n13,8,18\n4,5,7\n12,17,14\n14,11,14\n13,18,9\n9,11,1\n6,14,8\n11,8,2\n4,10,16\n16,13,11\n13,8,4\n10,6,17\n14,5,8\n6,8,16\n14,3,5\n14,16,7\n16,11,7\n13,4,11\n2,6,11\n2,10,7\n14,10,6\n10,11,2\n4,12,4\n16,13,8\n15,7,15\n4,9,3\n1,9,9\n16,5,10\n15,11,14\n14,13,14\n7,18,11\n7,3,15\n12,6,4\n16,7,15\n18,13,11\n9,4,15\n2,5,11\n9,2,9\n10,16,14\n11,2,8\n15,8,13\n3,10,6\n17,9,12\n3,10,9\n16,11,15\n11,5,17\n17,8,9\n5,4,10\n16,12,15\n12,2,11\n8,14,13\n14,4,12\n13,4,14\n15,8,6\n7,10,17\n17,12,8\n12,15,6\n3,7,7\n15,9,14\n3,5,10\n6,5,4\n10,8,2\n10,15,15\n7,1,7\n2,7,9\n18,7,9\n12,6,17\n6,16,12\n9,17,11\n6,6,3\n8,1,10\n6,16,5\n4,2,10\n3,10,4\n1,11,11\n5,11,10\n14,13,3\n8,7,2\n2,5,12\n3,11,10\n4,12,13\n4,6,11\n5,3,12\n12,16,11\n2,9,6\n7,2,12\n8,15,3\n3,12,12\n4,15,12\n6,7,16\n4,2,8\n15,7,16\n3,8,8\n13,17,6\n17,9,9\n3,12,14\n9,5,3\n8,8,3\n3,6,9\n11,7,17\n13,11,2\n7,12,3\n13,5,5\n15,10,5\n13,9,2\n9,6,15\n15,14,10\n8,18,6\n5,6,14\n9,14,14\n3,11,11\n9,11,3\n7,7,2\n16,9,10\n12,13,17\n11,3,10\n12,10,3\n16,5,14\n7,9,17\n4,10,13\n8,6,1\n12,15,15\n4,12,12\n3,12,7\n11,10,15\n8,5,18\n7,4,3\n16,12,10\n16,7,8\n12,1,9\n1,11,10\n16,8,9\n6,10,15\n16,12,5\n8,12,16\n14,13,7\n9,4,6\n17,9,6\n14,15,11\n13,11,16\n6,15,7\n2,7,12\n16,15,11\n11,2,13\n12,17,13\n4,13,11\n7,11,3\n9,4,5\n15,16,8\n2,14,11\n4,14,5\n14,6,4\n11,17,9\n5,6,12\n3,11,15\n4,3,9\n12,4,5\n4,12,16\n5,5,5\n8,13,15\n13,3,5\n6,10,3\n18,7,12\n15,8,4\n4,5,13\n5,8,16\n13,14,6\n17,5,9\n5,10,16\n12,18,8\n8,2,11\n13,2,7\n6,2,9\n11,4,15\n4,12,6\n13,5,3\n6,2,12\n11,4,4\n15,10,15\n3,7,5\n15,4,9\n3,11,7\n5,15,7\n5,14,5\n12,17,6\n16,6,10\n12,4,12\n14,11,5\n9,10,17\n13,16,11\n8,7,16\n10,17,4\n2,11,9\n18,9,7\n7,16,15\n2,10,14\n18,8,7\n17,11,9\n5,14,6\n8,3,11\n4,7,14\n2,9,11\n13,15,4\n8,17,6\n7,10,3\n9,9,15\n6,14,17\n2,5,10\n12,13,3\n3,15,7\n16,8,8\n8,3,5\n4,4,13\n12,15,13\n18,12,10\n9,3,14\n4,15,13\n13,15,5\n14,12,6\n16,11,11\n15,6,9\n7,6,17\n17,11,12\n6,18,8\n13,3,13\n13,2,6\n15,14,12\n12,15,3\n2,12,5\n3,4,9\n5,13,15\n14,15,5\n9,7,1\n2,9,7\n10,17,8\n4,7,4\n14,14,4\n11,15,6\n6,9,2\n12,12,3\n14,7,4\n10,6,1\n15,13,14\n11,3,13\n5,4,12\n15,6,4\n9,1,11\n15,17,8\n5,14,10\n11,14,16\n16,8,13\n16,10,13\n9,3,5\n14,12,14\n12,8,2\n3,7,13\n15,4,8\n2,14,5\n10,7,15\n6,12,13\n7,8,3\n10,15,5\n5,15,12\n8,14,5\n1,8,10\n8,16,7\n9,2,4\n15,5,7\n5,15,11\n14,4,13\n10,18,13\n13,12,5\n5,12,12\n4,5,14\n17,8,14\n12,11,2\n14,3,10\n13,7,5\n6,14,13\n3,10,15\n16,7,5\n10,15,14\n6,3,6\n12,17,12\n13,2,11\n15,4,5\n2,7,7\n12,16,12\n9,8,17\n17,11,10\n4,10,14\n12,12,2\n4,6,7\n14,5,12\n3,6,13\n14,8,14\n2,7,10\n16,9,11\n11,1,11\n9,4,16\n8,16,8\n10,2,6\n11,13,17\n6,14,14\n15,14,9\n4,12,10\n8,7,15\n3,6,6\n4,3,8\n13,5,10\n7,7,3\n4,16,9\n5,7,6\n5,12,14\n14,16,6\n16,11,5\n9,4,9\n1,7,13\n9,3,16\n11,3,11\n15,14,14\n4,14,11\n3,13,13\n18,9,9\n9,0,9\n2,6,8\n12,12,1\n17,12,14\n16,14,15\n3,12,4\n12,4,11\n14,15,6\n7,6,2\n10,14,4\n8,12,2\n12,8,17\n5,12,6\n9,3,8\n16,7,6\n6,11,15\n13,9,16\n11,4,16\n16,11,8\n12,15,8\n1,7,11\n5,9,5\n11,2,6\n8,18,9\n8,3,15\n10,17,11\n18,11,12\n14,4,8\n13,14,11\n13,5,7\n11,14,14\n4,15,8\n12,13,6\n12,12,18\n15,6,14\n5,5,13\n15,16,11\n9,7,17\n4,10,15\n14,15,14\n6,15,6\n9,15,3\n12,7,2\n11,16,14\n5,7,15\n17,8,12\n4,5,11\n13,6,7\n5,2,10\n14,3,8\n4,6,5\n17,11,11\n3,14,10\n6,3,9\n14,7,3\n10,5,2\n13,5,16\n15,16,13\n17,6,11\n8,17,15\n13,6,14\n18,7,10\n4,14,14\n13,14,4\n8,17,14\n17,12,9\n10,15,6\n16,9,15\n16,13,5\n11,17,11\n15,5,16\n4,15,10\n9,3,15\n4,8,14\n5,14,9\n11,8,18\n15,10,14\n12,14,14\n4,8,10\n11,7,2\n5,4,7\n15,15,12\n7,8,15\n10,6,16\n7,16,9\n14,4,9\n6,16,8\n8,12,3\n13,3,14\n4,7,3\n13,11,18\n17,10,7\n2,14,10\n5,9,15\n11,4,13\n2,9,9\n10,8,1\n12,15,12\n4,13,14\n8,9,0\n11,18,8\n11,17,12\n3,6,11\n4,13,15\n17,12,10\n11,2,9\n15,3,8\n7,5,14\n2,12,10\n11,7,18\n12,13,15\n12,7,1\n3,13,15\n16,9,13\n3,3,9\n10,7,0\n4,12,5\n17,10,10\n13,13,14\n10,11,18\n7,3,9\n15,15,13\n3,11,4\n15,7,13\n9,4,14\n1,9,7\n15,9,17\n8,11,16\n2,10,6\n4,11,3\n13,15,7\n10,1,11\n10,17,6\n5,13,3\n1,11,7\n11,13,16\n16,10,15\n8,2,6\n10,10,3\n11,2,4\n5,14,12\n7,15,13\n9,3,6\n7,15,4\n7,8,4\n10,13,16\n13,3,8\n1,10,9\n15,10,4\n13,6,2\n14,6,11\n7,13,16\n2,11,13\n3,6,12\n17,10,12\n3,9,13\n5,4,14\n10,4,3\n10,3,5\n9,16,7\n2,12,6\n17,6,9\n9,14,16\n11,13,4\n9,10,16\n7,2,11\n8,2,8\n3,14,5\n14,9,14\n1,6,10\n15,10,2\n14,12,5\n6,14,4\n3,7,11\n5,7,4\n8,17,5\n10,5,5\n14,14,11\n14,5,4\n6,4,7\n14,15,8\n12,5,6\n19,8,11\n11,14,2\n9,2,5\n7,1,9\n15,7,12\n8,9,1\n14,4,11\n8,14,15\n18,12,8\n11,16,5\n13,12,15\n16,12,13\n6,15,10\n15,4,14\n7,6,4\n7,2,14\n5,15,9\n8,19,10\n10,6,2\n16,15,9\n8,5,1\n5,4,15\n16,3,8\n4,4,5\n9,13,17\n5,14,7\n14,10,2\n5,15,5\n11,2,10\n3,12,9\n7,9,1\n12,16,3\n8,15,14\n6,5,15\n15,10,8\n17,7,11\n9,16,9\n15,13,15\n8,9,2\n5,12,8\n14,13,16\n6,15,4\n15,7,5\n11,12,3\n16,4,11\n11,9,2\n3,9,9\n1,11,12\n7,11,17\n11,3,12\n8,5,17\n14,5,7\n5,2,14\n13,10,16\n7,2,8\n17,8,11\n12,12,16\n12,1,13\n8,5,2\n16,5,12\n11,9,16\n2,13,8\n13,12,1\n8,16,4\n17,6,6\n15,7,6\n8,16,15\n18,7,8\n13,6,15\n7,2,6\n5,14,15\n8,14,3\n14,12,3\n11,9,19\n4,17,11\n16,14,5\n13,12,4\n18,10,7\n9,10,1\n10,1,9\n3,9,16\n9,12,17\n6,5,3\n11,17,8\n14,7,16\n10,15,3\n3,12,8\n14,12,17\n7,16,14\n3,15,11\n12,16,13\n9,11,0\n5,7,13\n1,8,13\n11,15,13\n16,12,14\n16,12,11\n9,18,10\n16,13,9\n12,6,2\n8,16,12\n15,11,3\n7,9,18\n6,8,5\n13,16,5\n9,8,2\n2,8,4\n4,14,10\n17,12,7\n17,7,7\n17,13,10\n6,13,10\n14,10,5\n16,3,12\n6,7,15\n10,4,13\n17,6,8\n9,11,19\n16,7,10\n9,6,2\n7,14,14\n11,18,9\n15,7,14\n3,16,9\n12,16,10\n6,16,14\n14,6,10\n14,3,9\n4,5,4\n13,5,13\n12,7,15\n12,3,4\n15,8,3\n7,8,18\n14,2,12\n14,14,8\n4,14,7\n8,7,1\n2,4,10\n8,4,7\n15,7,17\n11,16,8\n14,9,17\n18,12,9\n8,15,15\n10,2,14\n11,4,14\n11,16,15\n4,12,7\n12,4,15\n9,7,3\n10,4,14\n14,5,16\n14,7,17\n5,16,11\n15,3,13\n10,5,17\n8,3,12\n5,11,15\n2,7,5\n3,8,6\n8,17,7\n13,3,9\n8,4,16\n9,2,8\n7,10,16\n11,6,4\n6,15,13\n14,8,7\n6,2,11\n15,14,15\n14,14,6\n7,8,1\n2,8,9\n13,4,6\n14,9,12\n14,6,16\n13,3,6\n4,13,5\n14,2,8\n15,15,9\n8,11,18\n7,15,5\n10,11,3\n17,14,8\n8,18,7\n7,13,2\n13,10,1\n2,14,8\n10,11,0\n6,3,12\n3,11,9\n2,6,6\n16,9,16\n11,18,14\n7,15,16\n10,16,4\n8,17,11\n13,13,5\n10,10,18\n10,16,5\n10,14,5\n12,3,3\n1,9,8\n3,5,9\n7,4,4\n13,3,11\n9,2,10\n8,4,11\n13,9,4\n6,4,4\n1,10,6\n12,10,2\n7,16,11\n7,17,5\n2,11,4\n4,11,6\n8,2,5\n13,3,15\n6,2,7\n6,17,11\n10,5,3\n6,15,9\n11,3,9\n13,14,16\n13,4,9\n17,10,13\n12,2,10\n6,17,10\n7,1,8\n4,7,6\n10,3,6\n14,10,16\n2,12,12\n4,8,5\n8,2,7\n9,4,10\n14,11,17\n6,4,12\n15,10,7\n16,6,7\n2,11,10\n11,6,3\n4,11,8\n11,17,6\n11,16,9\n4,5,12\n2,7,4\n3,14,13\n3,13,10\n13,4,13\n6,9,16\n11,7,3\n13,2,13\n9,13,4\n16,10,3\n12,8,16\n8,16,6\n16,6,12\n1,10,7\n16,10,7\n6,9,1\n11,13,15\n6,13,2\n15,9,15\n5,4,3\n16,15,12\n6,15,11\n10,2,13\n5,6,5\n17,13,6\n8,5,3\n2,7,6\n12,2,13\n12,9,18\n5,17,8\n7,9,16\n13,1,8\n5,3,6\n6,3,11\n11,1,7\n12,4,4\n14,7,2\n17,7,14\n8,1,13\n18,7,7\n10,18,8\n17,12,11\n4,10,8\n18,8,12\n1,9,10\n9,8,3\n12,11,17\n4,11,13\n7,18,8\n3,12,13\n15,13,11\n2,12,15\n3,4,6\n1,10,8\n16,6,5\n15,13,16\n14,5,6\n15,13,4\n9,19,8\n6,18,13\n4,9,15\n7,16,7\n12,8,18\n10,16,6\n12,5,13\n14,5,5\n8,5,4\n9,4,2\n17,12,13\n9,12,4\n12,7,4\n11,17,13\n13,4,15\n3,4,8\n14,7,11\n4,10,2\n13,12,13\n15,3,12\n13,10,14\n4,7,5\n5,9,2\n13,9,6\n6,2,6\n9,6,1\n3,3,10\n18,9,8\n4,15,14\n13,11,4\n14,16,14\n8,1,5\n14,13,13\n4,9,2\n9,16,10\n14,12,15\n9,14,15\n6,4,15\n12,5,7\n3,9,6\n15,14,5\n7,1,11\n15,11,5\n11,3,8\n10,9,17\n9,12,2\n5,8,5\n6,17,7\n12,7,3\n10,12,16\n2,11,14\n1,7,10\n4,8,9\n16,16,12\n2,9,5\n13,8,17\n2,8,12\n4,3,13\n16,8,4\n5,16,6\n15,5,9\n7,14,17\n13,13,4\n5,14,4\n12,3,9\n12,11,1\n11,3,14\n6,12,6\n16,9,12\n11,8,6\n9,9,3\n18,6,12\n10,5,4\n9,14,10\n13,4,8\n13,8,16\n4,13,8\n7,17,14\n10,6,18\n16,3,9\n4,11,10\n6,5,2\n14,15,15\n4,3,12\n3,16,10\n8,7,3\n3,13,12\n6,13,5\n9,17,5\n9,16,16\n11,8,17\n2,8,5\n9,6,18\n9,5,5\n16,12,8\n12,15,16\n4,14,13\n7,11,16\n15,14,13\n14,8,5\n12,11,3\n8,8,4\n14,13,8\n13,8,13\n14,14,5\n10,15,13\n14,5,13\n12,10,4\n10,12,3\n8,13,14\n0,8,9\n2,13,11\n1,12,6\n15,13,8\n9,16,15\n3,7,4\n12,10,18\n4,11,14\n10,9,2\n4,12,15\n15,12,10\n14,7,14\n3,10,7\n17,14,5\n2,11,5\n15,3,9\n4,15,5\n12,11,18\n5,1,10\n6,12,14\n4,16,8\n11,15,2\n1,9,12\n3,10,16\n10,10,16\n8,16,14\n17,7,13\n11,14,17\n5,5,3\n16,7,9\n3,14,14\n15,13,12\n13,4,12\n10,9,3\n4,9,16\n15,13,6\n7,3,5\n15,11,7\n7,4,16\n8,4,8\n4,5,3\n12,16,15\n2,12,13\n18,9,12\n11,11,3\n14,2,10\n8,14,2\n9,9,19\n16,10,6\n2,8,14\n5,6,13\n7,5,6\n14,5,10\n13,10,15\n7,7,18\n17,11,8\n12,15,9\n8,10,2\n8,18,8\n15,8,12\n7,15,11\n12,11,4\n7,13,5\n17,11,4\n2,5,9\n9,8,1\n6,15,16\n5,7,5\n12,6,5\n9,17,14\n11,11,18\n9,15,4\n10,17,9\n8,16,10\n17,11,5\n13,8,15\n18,11,13\n3,13,14\n11,11,1\n13,16,7\n15,16,12\n5,5,9\n3,12,15\n3,14,11\n2,7,14\n11,4,5\n6,6,7\n12,1,10\n3,9,4\n13,17,10\n4,17,12\n5,6,2\n13,4,10\n7,15,3\n15,11,12\n4,13,16\n9,12,15\n6,2,14\n3,7,12\n15,9,5\n13,5,6\n10,17,14\n6,15,8\n10,1,13\n17,12,4\n6,3,8\n6,5,7\n14,14,13\n17,15,11\n12,10,16\n18,8,6\n12,10,15\n17,13,14\n11,5,13\n10,3,7\n15,15,8\n12,9,1\n6,11,2\n4,14,6\n10,15,17\n7,18,6\n12,8,5\n6,11,11\n13,16,10\n6,10,18\n16,6,4\n11,6,1\n16,15,7\n6,5,13\n7,5,17\n6,17,9\n8,15,13\n12,1,11\n12,14,17\n9,2,14\n1,6,8\n9,8,16\n13,7,14\n4,14,4\n12,11,15\n1,12,7\n3,9,12\n14,7,6\n10,2,9\n10,16,8\n6,11,4\n18,9,13\n4,8,16\n4,9,17\n14,11,4\n15,16,7\n18,10,10\n18,10,13\n17,5,11\n10,13,18\n4,9,14\n5,4,4\n9,4,17\n1,10,12\n3,15,13\n")
(defn parse-longs [s]
(->> (re-seq #"\d+" s)
(map parse-long)))
(defn parse-input [input]
(set (->> (str/split-lines input)
(map parse-longs)
(map vec))))
(defn neighbours [p]
(let [[x y z] p]
(set (for [dx [-1 0 1]
dy [-1 0 1]
dz [-1 0 1]
:when (= 1 (+ (abs dx) (abs dy) (abs dz)))]
[(+ x dx) (+ y dy) (+ z dz)]))))
(defn part1 []
(let [cubes (parse-input input)]
(->> (map #(set/difference (neighbours %) cubes) cubes)
(map count)
(reduce +))))
(let [cubes (parse-input input)
min-x (dec (reduce min (map #(nth % 0) cubes)))
max-x (inc (reduce max (map #(nth % 0) cubes)))
min-y (dec (reduce min (map #(nth % 1) cubes)))
max-y (inc (reduce max (map #(nth % 1) cubes)))
min-z (dec (reduce min (map #(nth % 2) cubes)))
max-z (inc (reduce max (map #(nth % 2) cubes)))
inside-bbox? (fn [[x y z]]
(and (<= min-x x max-x)
(<= min-y y max-y)
(<= min-z z max-z)))
filled (loop [fill [[min-x min-y min-z]], cubes cubes]
(if (empty? fill)
cubes
(recur (->> (set/difference (neighbours (peek fill)) cubes)
(filter inside-bbox?)
(into (pop fill)))
(conj cubes (peek fill)))))]
(- (part1)
(->> (map #(set/difference (neighbours %) filled) cubes)
(map count)
(reduce +))))