summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornekineki <nekineki@nekineki.net>2025-12-10 14:54:39 +0100
committernekineki <nekineki@nekineki.net>2025-12-10 15:29:27 +0100
commit93bbed1d8dae3bbbb785eeeb0732fa33a72a7acf (patch)
tree064e84367c799ee67c011ec6ba132c707e63f30e
parent3bc75bd2c26b972f5f683fff7d2d8e4f282263ab (diff)
day10 part1
-rwxr-xr-x2025/day10.py48
-rw-r--r--2025/in/day10.pzl166
-rw-r--r--2025/in/day10.ref3
3 files changed, 217 insertions, 0 deletions
diff --git a/2025/day10.py b/2025/day10.py
new file mode 100755
index 0000000..5eea131
--- /dev/null
+++ b/2025/day10.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+from functools import reduce
+from re import findall
+from copy import deepcopy
+import sys
+from itertools import combinations
+import numpy as np
+from scipy.optimize import linprog
+
+filename = sys.argv[1] if len(sys.argv) == 2 \
+ else "in/" + sys.argv[0].split('/')[-1].rstrip(".py") + ".pzl"
+data = open(filename).read()
+lines = data.rstrip('\n').split('\n')
+
+res1 = 0
+res2 = 0
+
+def part1(light, buttons):
+ for r in range(len(buttons)):
+ for c in combinations(buttons, r):
+ state = [0 for _ in light]
+ for b in c:
+ for l in b:
+ state[l] ^= 1
+
+ if light == state:
+ return r
+
+for line in lines:
+ s = line.split(' ')
+ s_light = s[0]
+ s_buttons = s[1:-1]
+ s_jolt = s[-1]
+
+ light = [1 if i == '#' else 0 for i in s_light[1:-1]]
+
+ buttons = []
+ for sb in s_buttons:
+ buttons.append([int(i) for i in sb[1:-1].split(',')])
+
+ jolt = [int(i) for i in s_jolt[1:-1].split(',')]
+
+ res = part1(light, buttons)
+ res1 += res
+
+print('res1:', res1)
+print('res2:', res2)
+
diff --git a/2025/in/day10.pzl b/2025/in/day10.pzl
new file mode 100644
index 0000000..4d8c5e0
--- /dev/null
+++ b/2025/in/day10.pzl
@@ -0,0 +1,166 @@
+[.##.#..#.] (2,3,4,6) (0,1,3,4,5,6) (1,2,3,7,8) (0,1,3,5,6,7,8) (0,1,3,4,5,6,8) (0,1,4,7,8) (2,4,6,7,8) {41,56,34,37,46,22,41,67,71}
+[.#..##] (3,4) (1,3) (0,2,4,5) (2) (0,1,3,4,5) (0,1,5) (3,5) (1,3,4) {33,65,16,88,54,52}
+[#..#..#..] (0,1,5,6) (0,1,4,7) (1,2,3,4,6,7) (1,2,4,5,6) (1,4,5,6,7) (1,2,5,6,8) (0,1,4,5,6,7,8) {212,250,36,8,36,231,239,23,17}
+[##.##] (4) (0,1,3,4) (2,3) (0,1,2,4) (1,2,4) (1,2,3) {2,16,21,21,7}
+[##..###] (2,4) (0,1,3,4,5,6) (2,6) (0,2,3,5) (0,1,2,3,4) (1,4) (0,2,3,5,6) (0,4,6) (3) {58,25,73,46,65,21,44}
+[#.#.#.] (3,4,5) (0,2,4,5) (0,1,4,5) (0,2) (0,1,5) {32,18,14,19,49,49}
+[.######..#] (0,1,2,3,5,7,9) (0,1,2,3,4,5,6,7) (3,5,8,9) (3,4,5,6,7,8,9) (0,2,3,4,5,7,8,9) (0,3,9) (1,5,6,7,9) (0,2,4,9) (0,2,3,5,6,7,9) (2,3,5,6,8,9) (0,1,7) (2,4,8,9) {83,47,99,85,57,97,59,79,50,108}
+[##..##.] (3,5,6) (0,1,2,3,5) (4) (0,1,5,6) (2,3) {14,14,13,33,20,34,22}
+[.###.#..#.] (0,3,7) (2,3,4,8) (1,2,5,6,7,8,9) (2,5,6,7) (5,9) (1,7) (2,3,4,7,8) (8,9) (0,1,2,4,6,7,8) (8) (0,5,6) {120,24,40,123,19,50,37,149,47,33}
+[..##.#] (1,3) (1,5) (0,2,4,5) (0,3,4) {25,29,19,17,25,37}
+[.#.#..####] (0,2,3,4,5,6) (0,1,5,6,9) (2,7,9) (2,4,7,8) (0,1,4,7,9) (0,1,3,4,5,6,8,9) (3,8) (0,3,4,6,8) {38,27,22,33,41,18,26,31,43,33}
+[#..##.#.#.] (1,3,4,5,6,8,9) (0,2,5,6,7) (6,7,8,9) (0,1,3,9) (4,6,7) (0,6,7,8) (3,5,6,7,8) (1,2,5) (1,5) {140,176,13,168,16,49,35,20,34,161}
+[.##.#.##.] (0,3,4,5,6,8) (0,2,5) (0,2,4,5,7,8) (2,4,6) (1,3,4,5,7,8) (0,1,4,5,6,7) (1,7,8) {31,50,169,29,212,50,188,55,50}
+[#.##] (0,2,3) (0,1) (1,2) (1,2,3) {29,31,38,23}
+[.##..] (1,2) (0,2) (1,3,4) (0,1,2,3) (3,4) {29,57,46,58,38}
+[..####.##] (1,3,4,6,8) (1,2,3,4,6,7) (0,3,4,5) (2,3,4,5,7,8) (1,3,4,5,7) (1,2,5,6,7,8) (0,1,2,6,7,8) (2,3,4,6) {129,63,63,180,180,138,73,53,45}
+[..##.#.##.] (0,4,5,6,9) (2,3,4,7,8,9) (5,8,9) (0,1,2,3,6,7,8,9) (0,3,4,5,6,7,8,9) (3,6,9) (2,5,6) (2,5,7,8,9) (1,2,5,8) (0,1,2,4,7,8,9) {42,11,39,34,46,71,60,39,50,75}
+[..#.###] (1,3,4,5,6) (0,2) (4,5) (0,1,3,4,6) (0,3,4,5,6) (1,2,4,6) (0,2,3,4,6) {49,48,36,51,81,33,71}
+[.#.#####.#] (3,6,7,9) (0,1,7,8) (0,3,4,5,6,7,8,9) (5,9) (0,1,2,3,5,6,7) (2,9) (3,6,9) (4,6,7,8) (1,4,5,6,7,9) (0,3,5,6,7,8,9) (0,2,3,4) (3,6,8) (2,4,5,6,7) {28,25,29,35,44,39,62,58,34,30}
+[.#.##..##] (0,3,4,5) (0,1,3,7,8) (0,2,5,6) (6,8) (0,1,2,3,4,5,6) (1,2,3,5,6,8) (2,4,5,7,8) {133,116,19,136,28,39,31,109,132}
+[#.#...] (0,1,3,5) (1,3,4,5) (4,5) (0,2) (1,3) (3,5) {33,33,17,39,4,26}
+[.###.] (1,4) (0,3,4) (2,3,4) {3,3,9,12,15}
+[#.#.#.#..#] (0,1,3,4,5,6,8) (1,4) (0,1,3,4,7,8,9) (1,4,6,7,9) (4,6,7,8) (0,1,2,3,5,8,9) (4,5,6,7,8) (0,9) (3,6,7,8) (1,2,3,8,9) {182,188,156,173,43,157,30,34,184,196}
+[.##....#] (1,7) (4,5,6,7) (0,1,2,5,6,7) (0,2,3,5,6,7) (0,1,5,6,7) (0,2,4,5,7) {131,132,128,7,22,147,141,161}
+[...##..#.] (0,4,6) (0,3,4,5,6,8) (0,1,3,4) (2,7,8) (0,2,3,4,5,8) (0,4,6,7,8) (3,5) (1,2,5) (1,7) (2,4,6,7) (0,1,3,6,8) {237,25,29,219,235,219,220,38,230}
+[#..##] (1,2,3,4) (0,2) (0,3,4) {143,20,155,28,28}
+[#...##.#] (1,3,5) (0,1,3,5,6,7) (0,3,4,5) (2,4) (7) (0,3,5,6,7) (0,1,2,3,4) (0,1,2,4,5,6,7) (0,4,5,6,7) {71,43,38,61,71,79,45,57}
+[###.] (0,1,2) (1,2) (1,2,3) (0) (2) (1) {10,42,41,19}
+[.#.#] (1,3) (2,3) (0,1) (1,2) (0,2) {8,18,8,18}
+[...######] (6,7) (0,1,3) (2,3,4,5,6) (0,1,2,3,5,7,8) (4,7) (0,1,2,4,6,7,8) (2,3,7) (6,8) (1,3,7) {6,13,33,39,32,20,40,41,12}
+[##.##] (1,2) (0,4) (2,3) (0,2) {2,12,34,20,0}
+[..####] (0,4,5) (2,3,4,5) (2,5) (0,1,5) {28,14,20,12,26,48}
+[##..##] (1,2,3,5) (3,4) (0,1,4,5) (1,2,3,4,5) (4) (0,1) {25,58,33,40,58,46}
+[#.##.###] (0,3,6,7) (0,2,3,4,5,7) (4,6) (3,5,6,7) (0,3) (1,5,7) (2,5,7) (1,2,3,5,6,7) {49,25,43,77,26,68,54,83}
+[#.#.#] (1,2,4) (0,1,2,3) (1,2,3) (0,2,4) {19,12,29,9,20}
+[##.#.] (0,1,2,4) (1,2) (0,2,3) {36,26,43,17,19}
+[##..###] (0,5,6) (1,2,3,4,6) (1,4,6) (1,2,3,4) (2,6) {2,45,31,31,45,2,32}
+[##..#.####] (0,2,3,4,6,7,8,9) (3,4,8) (0,5,8) (3,9) (0,2,4,5,9) (0,1,3,4,5,6,7,8,9) (2,4,5,6,7,9) (3,5) {22,13,21,42,34,42,34,34,22,46}
+[##..#....#] (0,2,3,6,7,8) (0,1,2,5,6,7,9) (0,1,3,4,5,8) (0,2,3,5,6,9) (0,1,2,4,6,8) (1,5,6,8,9) (2,4,7,8) (0,3,4,5) (1,2,3,6,7,8,9) (1,3,4,7,8,9) (0,2,3,7,8,9) (0,5) (2,3,5) {65,54,65,70,43,60,67,37,67,55}
+[#......] (2,4,5,6) (1,3,4) (0,2,3,4,6) (0,3,4,5) (3,4,5) (1,5) {9,19,8,43,44,22,8}
+[...#.###] (0,2,3,4,5,6,7) (1,3,5) (1,3) (2,4,5,6,7) (1,2,3,4,7) (0,3,7) (3,5) (0,3,5,6) (1,3,5,6,7) (0,5,6) {30,38,31,76,31,81,51,41}
+[.####] (1,2) (0,1,2) (0,3,4) (1,3) {151,37,22,147,132}
+[.#..##.#..] (0,1,3,5,6,8) (0,1,3,4,7,8,9) (2,4,5,6,7,8) (0,1,2,3,4,6,7) (0,1,3,4,5,6,7,9) (0,1,2,3,4,8,9) (4,5,9) (1,6) (0,1,2,4,5,6,7,8) (1,2,3,4,5,7,8,9) (1,3,5,6) {69,103,34,84,81,86,82,62,66,59}
+[.....###.] (0,5,6,7) (1,3,5,8) (1,3,6,7,8) (0,4) (0,3,4,5,7,8) (0,2,3,4,6) (0,1,2,3,7) (0,1,3,4,5,6,7) (0,1,3,4,5,7,8) {54,45,10,55,44,42,25,39,29}
+[..##.#] (2,3) (0,2,4) (0,2,3,4,5) (0,1) (4) (0,1,2,4,5) (1,5) (1,2,3,4) {52,40,81,47,76,34}
+[..#...#..] (0,3,6,8) (1,7) (0,1,3,7,8) (5,6) (0,1,4,6,7,8) (0,2,3,5,6) (0,1,2,4,5,6,7,8) (0,1,3,4) (1,2,3,5,6,7,8) (1,3,4,5,6,8) {74,56,26,62,35,43,69,40,57}
+[#..#......] (1,4,5,9) (0,1,2,4,5,7,8) (0) (0,1,2,4,5,7,8,9) (3,5,6,7,9) (1,6) (3,4) (4,7) (1,2,4,5,6,7,8) (0,5,7) (2,5,7,8) (0,1,3,5,6,7,8) (2,5,9) {70,73,52,43,54,110,60,98,53,50}
+[.#.#.##..] (3,4,6,7) (0,1,2,5) (0,1,2,4,6,7) (2) (0,1,2,3,5,7,8) (0,1,3,6,7,8) (2,3,4,5,6,8) (1,6) (0,1,3,4,7,8) (2,4,8) (2,4,5,6) {57,76,76,134,169,48,175,148,31}
+[..#.#.###] (0,1,3,6) (0,2,6,8) (5,7) (0,1,2,4,5,6,8) (1,3,4,5) (4,7,8) (1,3,8) (1,2,3,5,6,7) (3,4,6,7,8) {36,38,30,35,49,31,52,46,68}
+[#..##.##] (0,1,2,3,4,5) (0,2,3,4,5,7) (0,3,4,6,7) (2,6,7) (1,7) (0,2,6) {178,16,36,178,178,31,152,171}
+[##..] (0,1) (2) (1) (1,3) {17,24,18,2}
+[.##..###..] (0,1,2,6,8,9) (0,2,3,4,5) (0,1,2,3,4,6,8) (1,3,4,9) (0,5,9) (1,5,7) (3,8) (0,1,5,6,8,9) (0,1,2,3,4,5,7,8) {44,61,26,25,21,41,40,20,44,25}
+[######.] (3,4,6) (0,1,5) (0,1,3,4) (0,3,4) (0,1,2,3,5) (0,1,2,4,5) (0,2,5,6) (0,1,3,6) {239,220,51,33,31,227,20}
+[#######..] (2,4,6,7,8) (1,2,3,4,5,7,8) (0,2,6,7) (0,2,3,4,5,8) (6,7,8) (0,2,3,5,6,7,8) (8) (2,3,4,7) (1,5) (0,1,2,3,4,6,7) {35,24,71,35,52,32,51,68,56}
+[#..#] (1) (0,1) (0,1,2) (0,3) (0,2,3) {48,24,12,29}
+[.#.###.] (0,1,4,6) (1,3,4,5) (2,4,5) (0,2,3,4) (1,3,4,6) (0,2,6) (1,2,3,5,6) {16,43,35,41,34,29,49}
+[...##.] (5) (0,2,3,5) (0,1,2,3,4) (1,3,5) (3,5) (0,3,4,5) (1,2,5) (0,4) {44,43,30,62,40,56}
+[###.##.#] (0,1,2,3,5,6) (0,1,2,3,4,7) (4,6) (1,5,6,7) (0,1,2,3,5,7) (0,2,4,6,7) (0,4,5,6) (3,4) {41,205,35,28,47,196,213,216}
+[#...] (1,2,3) (2) (0,3) (0,1) (0,2) {170,9,155,17}
+[......#...] (0,1,7) (1,2,6,7,9) (6) (0,1,2,3,4,6,7) (0,1,2,3,4,5,8) (3,6,7) (0,1,2,4,5,6,8,9) (4,8) (0,1,2,3,5,6,7,8) (0,2,3,4,5,6,7,9) (3,8,9) (0,2,6,7,8,9) (2,3,4,6,7,8) {63,52,89,69,64,39,109,78,70,64}
+[.#.#.###] (2,3,5,6) (0,6,7) (4,7) (0,5) (0,6) (1,2,4,5,6,7) (0,1,2,5) {35,5,10,5,12,27,24,14}
+[#..#..#] (1,5) (1,4,5,6) (1,2,4,5,6) (1,3) (0,2,4,6) (3,5) (0,3) (1,2,5,6) {175,57,40,173,38,41,49}
+[....#.#] (1,3,6) (1,6) (1,4,5) (1,2,3,4) (0,1,2,3,5) (0,2,4,5,6) (0,2,3,5) {40,73,51,55,31,51,40}
+[#.##...] (0,4) (0,2,6) (0,2,5,6) (1,6) (2,3,4) (5) {14,19,19,17,29,11,21}
+[.#.##] (2,3) (2,4) (1,3,4) (0,2,4) (0,3) {23,5,34,31,25}
+[##..] (0,1) (0,2,3) (3) (1,2) (2,3) (0,3) {20,20,4,21}
+[#.....#] (0,2,3,4,5,6) (0,2,5,6) (1,2,3,4,6) (2,5) (2,3,4,5) (0,6) (0,4,5,6) {46,3,58,33,52,74,49}
+[#...#.####] (3,4,5,6,8,9) (0,1,2,3,4,5,6,9) (1,3,4,9) (0,4,6,7,8,9) (3,4,5,8) (3,6,7) (0,2,5,8) (1,6,8) {24,16,18,55,55,52,42,12,48,39}
+[..##.##] (0,1,3,4,5) (0,1,3,4,6) (0,2,4) (0,2,3,5,6) (2,6) (0,2,4,5) (4,6) {52,12,40,32,52,40,52}
+[#...#.#] (0,1,2,4,6) (0,1,4,6) (0,1,3,4,5) (1,2,3,5,6) (0,1,2,3,6) (0,1,3,5,6) {81,99,56,59,45,41,94}
+[...#.....#] (0,5) (5,6,9) (0,1,3,4,6,7,9) (4,7) (0,1,3,4,6,7,8,9) (0,5,7,8,9) (3,5,6,7,8,9) (0,2,7) (0,1,3,4,6) (1,2,3,4,5,6,7) {31,21,10,38,33,52,49,60,34,49}
+[.#.##..##.] (0,2,3,4,5,6,9) (0,2,3,5,6,8,9) (0,1,7,8) (4,9) (0,1,2,3,4,5,7,8) (3,4,5,7,9) (1,2,4,5) (1,6,7,8) (1,2,4,6,9) (1,2,3,4,8,9) (0,2,5,6,9) (0,2,3,4,5,6,7) {83,55,99,88,90,94,62,60,54,86}
+[###.#.###.] (0,5,6,7,8) (0,1,2,4,6,7,8) (5,8) (0,1,4,6,8) (0,3,6,7,8) (0,1,3,5,6,9) (0,1,3,4,5,6,8,9) (1,7,8) (1,2) {75,69,40,25,38,21,75,56,77,6}
+[.#.#..] (2,3,4,5) (0,1,2,5) (0,2,3,5) (0,1) (1,4) (0,1,3,4) (0,1,4) {58,59,31,24,32,31}
+[##.#.] (1,4) (0,4) (1,2,3) (3) (2,3,4) (2) (0,2) {16,24,138,125,125}
+[...#.##.] (0,1,4,5,6,7) (0,1,3,4,7) (1,2,4,5,6) (3,7) (0,2,4,5,6) (0,1,2,4,6) (2,5,6,7) (1,7) {38,38,47,24,41,37,50,55}
+[.###] (0,1,2) (1,2) (0,1) (0,3) {37,33,16,11}
+[.#.#..] (3,5) (0,2) (0,4,5) (0,1,2,5) {29,8,24,14,5,27}
+[#.##] (0,2,3) (1,3) {19,10,19,29}
+[.##.######] (0,1,2,5,7) (3,5,8,9) (1,4,5,7,8,9) (1,2,3,4,5,6,7) (0,1,6) (1,2,3,4,5,7,8) (1,2,4,5,6,7,8,9) (0,1,3,5,6,8) (0,2) (0,1,2,3,5,7,8,9) (6,8) (1,2,4,5,9) {45,83,81,31,58,96,38,59,57,66}
+[##.###.] (2,3,4,6) (0,4,6) (1,2,3,4,6) (0,1,2,3,6) (0,1,3,4,5,6) {30,15,22,28,40,6,46}
+[.#...] (0,2,3) (0,4) (0,1,4) (0,1,2) (1,3) (1,2,4) (1,3,4) {36,44,8,31,39}
+[#####..#] (1,2,4,5,7) (0,1,3,4,7) (0,2,3,4,6) (0,3,4,5,6,7) (0,3,5,6) (0,3,5,6,7) (2,5) (1,2,4,7) {53,44,44,53,63,49,37,71}
+[##...#....] (3,5,6,7,8) (4,6,9) (1,3,5,6,7,8) (0,3,5,7) (1,2,3,4,6,7,8,9) (1,2,9) (3,6,9) (1,4,6,8) (0,1,2,3,4,5,6,9) (0,2,3,5,7,8) {17,33,13,66,20,53,69,49,54,24}
+[.#.##.] (3,4) (1,3,4) (0,3,5) (0,1,3,5) (2) {19,16,7,134,115,19}
+[##.#.] (1,2,4) (1,2,3) (3) (1,3) (0,2) (0) {13,189,4,208,0}
+[.####.] (3,4) (1) (2) (0,1,2,5) (0,2,4) {12,27,23,17,19,10}
+[.#.#...#] (1,4,5,6,7) (6) (0,6,7) (1,2,3) (1,6) (2,4,5,6) (3,4,7) (0,1,2,3,4,7) (0,2,3,5,6) {22,42,42,32,30,21,55,27}
+[#...#####.] (1,2,5,6,7,8,9) (1,2,3,5,6,8,9) (0,4,7,9) (2,3,6,7) (3,4,6) (0,3,4,7,8) (0,1,2,4,6,7,8) (1,2,5,6,8) (0,1,2,4,5,6,7,8) (1,4,5,7,9) (0,2,3,4,6,7,8) {214,54,224,215,238,36,240,244,230,31}
+[..#.#..#..] (0,1,5,6,8,9) (0,1,4,5,6,8,9) (1,3,4,5,6,8) (1,2,3,5,7,9) (1,2,3,4,5,6,7,9) (1,3,4,5,6,9) (1,2,4,6,7,8,9) (0,1,3,5,7,8,9) (2,3,5,6,7,9) (1,2,3,4,6,7,8) (1,2,3,4,6,7,9) (5,6,7) {32,93,66,72,65,91,100,86,61,94}
+[#.##.#] (0,1,2,3,5) (0,1,2,5) (1,3) (3,4) (3,5) (0,2,3,4) {34,18,34,52,36,30}
+[###..#..#.] (0,4,7,8,9) (0,9) (0,1,2,4,6,7,8,9) (1,2,7) (0,1,3,4,8,9) (0,3,6,8) (5) (3,5,9) (0,1,2,4,5,6,7,9) (0,1,2,3,5,7,8,9) {89,57,40,176,52,160,40,53,52,211}
+[..###] (0,1,3,4) (2) (0,1,2) (0,2) (1,4) (0,1,3) (2,4) {69,65,68,30,51}
+[...##..#] (0,1,2,6,7) (0,3,4,5,7) (2,4) (1,3,4,6,7) (5,7) (1,2) (0,2,3,4,6) (1,3,4,7) {21,18,28,27,38,6,21,22}
+[#.#.] (0,2) (0,1,3) {30,14,16,14}
+[..#.#.#] (0,4) (0,1,2,3,4,5) (2,6) (0,4,5,6) (1,2,3,4,6) {17,178,185,178,192,9,188}
+[##.#.###] (0,1,7) (0,3,4,5,7) (3,7) (0,1,2,4,6) (0,4,6,7) (0,4,5,6) (2,4,6) {66,26,23,27,63,38,44,42}
+[##..#....] (0,3,7) (2,3,7) (0,2,3,5,6,7,8) (0,1,7) (0,3,5,6) (0,8) (1,3,5,6,7) (0,1,2,3,6) (4,5,6,7) (0,1,2,6,7,8) {48,44,30,55,8,33,47,60,9}
+[..#.#.#.#] (0,2,3,4,7,8) (3,4,5,6,7) (0,1,2,7) (0,1,2,3,4,5,6) (0,3,5,6,7,8) (0,2,3,7,8) (0,2,5,8) (0,2,3,4,5,6,7) {217,6,71,209,52,196,180,207,191}
+[####] (1,2) (0,3) (1,2,3) {6,182,182,17}
+[.###.#] (1,2,3,5) (2,4,5) (4,5) (0,1,3,5) (1,3,4,5) (0,2) (1,2,4,5) {15,37,40,22,42,64}
+[..##.###.] (0,1,2,5,7,8) (1,2,3,4,5,7,8) (0,4,7) (0,2,4,5,6,7,8) (3,6,7) (6,8) (1,2,4,5,6,7,8) {42,43,59,17,61,59,55,79,72}
+[#..##] (1,2,3,4) (0,3,4) (0,2,3) {19,4,14,23,13}
+[.....#] (0,2,3,4) (0,1,2,4) (2,3) (0,4) (2,3,4,5) (3) (1,4) {26,11,42,57,49,17}
+[#.#.##] (0,1,2,4,5) (1,2) (1,2,3,5) (0,2,4,5) (0,5) {21,25,34,6,17,27}
+[#...#] (0,2,3) (1,2,4) (1,3,4) (1,2) (2,3) {18,38,48,34,22}
+[###..#.##] (0,2,3,4,5,6,7) (1,4,7,8) (1,3,5,6,7,8) (0,2,4,5,6,7,8) (1,8) (1,2,4,6,7,8) (0,3,4,8) (0,1,2,5,6,7,8) (5,8) (1,2,3,4,5,6,8) {53,49,46,56,82,71,55,65,98}
+[#.###.#..] (0,1,4,7,8) (5,7) (1,2,3,6,7,8) (4,6) (2,3,4,5,6,7,8) (2,3) (1,2,3,5,6,7,8) {14,30,44,44,45,40,47,55,50}
+[#..#] (0,1,2,3) (1,2) (2) {20,38,58,20}
+[..#..####] (0,1,2,6,8) (0,1,2,3,6,7) (1,3) (0,1,3) (0,2,4,7) (2,3,4,6,7) (2) (1,2,3,5,6,7,8) (1,6,7) (3,4,5,6,7,8) (4,5) {42,72,71,47,20,19,76,60,35}
+[.#.#] (1,3) (0,1,2) (0,3) (0,2,3) {22,22,6,38}
+[..##..#] (1,2,5,6) (0,4,5,6) (0,2,4,6) (0,1,2,4) (0,2,3,4,5) (1,2,3,5,6) (1,3,5) (1) (3) {43,51,48,19,43,52,56}
+[##.#] (0,1) (2) (0,2) (1) (1,3) (3) {13,23,26,18}
+[...##.#] (1) (2,3,5,6) (1,3) (4,5,6) (0,2,4) (0,1,2,4,6) (0,1,2,3,6) (6) {23,51,40,36,24,23,196}
+[....#.#] (0,1,2,3,5,6) (0,2,4,5) (0,2,5,6) (4,6) (0,1,3,4,5,6) {31,10,29,10,13,31,40}
+[#..#..#.] (0,5,6) (1,5,7) (1,2,3,5,7) (0,4,5,6,7) (2,5) (1,2,4,5) {19,34,30,4,36,61,19,34}
+[.##.#] (0,2,3,4) (1,4) (0,1,2,3) (0,1,3) (0,1,2) {35,42,31,24,21}
+[...#] (1,2,3) (0,3) (1,2) (0,2) (3) (0) {28,30,42,21}
+[###.] (0,1,2) (1) (0,2) (2,3) {35,34,37,2}
+[###...##] (1,2,5,6,7) (1,2,3,4,6) (7) (0,2,3,4,6,7) (0,4,6) (1,2,4,5,7) (0,3,5,7) (1,2,6,7) (0,3,5) {34,34,35,31,40,32,38,36}
+[###.] (1) (0,3) (0,2) {21,13,1,20}
+[#.#.] (0,1,2,3) (0,2) {33,14,33,14}
+[#....#..##] (0,1,2,8,9) (0,1,3,5,6,9) (1,3,5) (0,2,3,5,6,7) (7) (2,4,5) (2,6) (0,3,4,6,9) (1,3,4,5,6,9) {56,44,38,54,26,46,47,20,17,49}
+[#..#] (3) (2) (0,3) (1,2) (0,2) (1,3) {19,19,23,36}
+[#.#####] (0,5) (4,5,6) (2,3,5) (1,6) (1,2,3,6) (0,1,5,6) (2,3,4) (0,2,5,6) (0,3,5,6) {60,23,51,56,16,92,71}
+[###.] (0,1,2) (1,2,3) {13,20,20,7}
+[#.##..#] (1,2,3,5,6) (2,4,5,6) (1,2,3) (0,1,2,3,4) (3,4,6) (0,1,4,6) (0,3,4,5,6) (0,1,3,5) {44,40,28,66,59,43,55}
+[...#####] (1) (1,3,5,6,7) (2,4) (1,2,3) (1,6) (6) (0,2,4) (1,3,4,5,7) (3,4,6) (1,2,3,4,5,7) {13,46,27,45,48,26,53,26}
+[##.....#.#] (7) (0,4,5,9) (0,1,2,3,6) (0,1,5,6,7,8,9) (1,3,4,5,6,8) (1,2,3,4,5,6,7,8) (1,2) (3,8) (1,2,4,5,7,8,9) (1,2,3,4,6,8,9) (1,2,3,5,6,9) {23,67,56,46,46,48,42,53,53,31}
+[....######] (1,3,5,9) (4,5,6,7,8,9) (1,4,5,6,7,9) (0,1,5,6,7,8,9) (0,1,3,6,9) (2,3) (6,9) (0,1,7,8,9) {42,61,6,28,23,57,51,57,52,79}
+[#...#] (1,3) (0,1,2) (0,1,4) (0,4) {40,39,16,16,24}
+[.#...#...] (0,3,5,6,8) (0,1,3,5,7,8) (1,4,8) (0,2,3,4,6,8) (3,4,6,7) (2,4,8) (1,4,5) (0,2,3,5) (1,7) (1,6) (0,2,6,7) {40,31,22,35,33,30,34,27,50}
+[##.......] (0,1) (0,1,3,5,6,7,8) (0,2,3,4,5,7) (0,1,2,4,6,7) (0,4,5,6,7) (2,4,6,7,8) (1,2,3,6,8) (0,3,4,5,6) {57,23,39,32,61,42,57,52,16}
+[##..#] (0,1) (0,2) (0,2,3) (3) (2,3) (4) {10,2,23,34,18}
+[..#.#...] (0,5,6) (2,3,4,5) (1,5,7) (0,3) (0,1,4,7) (1,3,4,6,7) {181,22,4,175,18,28,26,22}
+[#####.] (0,1,2,5) (3,4,5) (0,2,3) (0,4) (1,2,3,5) (2,3,4) {24,184,197,205,25,203}
+[###..#] (0,1,2,5) (1,2,3,4) (1,3) (1,2,4,5) (0,3) (2,3,4,5) (0,2,3) (0,1,4,5) {61,64,65,85,60,47}
+[#.#.#.] (1,3) (0,1,3,5) (0,2,5) (4,5) (0,2,4) {29,14,15,14,173,178}
+[#...####] (3,7) (0,1,6,7) (0,3,4,6) (4,5,7) (0,2,3,4,6) (3,4,6) (0,1,2,3,4,6) (0,1,3,4,6,7) {32,11,11,55,71,20,51,32}
+[###.##..] (2,4) (0,1,6,7) (0,1,2,5,6) (0,2,3,4,5,6,7) (4,5) (0,1,2,3,6,7) (0,1,2,3,5,6) (3,5,7) (0,2,3,4,7) {244,232,232,46,22,234,234,47}
+[...#...#.#] (0,1,6,8,9) (0,2,6) (0,1,2,3,4,5,6,9) (2,3,4,5,6,7,8) (3,4,8) (1,3,4,6,7,8) (1,2) (5,7,9) (0,1,4,5,6,9) {36,51,49,33,43,55,60,42,37,48}
+[########.#] (2,8) (0,5) (0,1,3,5,8) (0,1,4) (0,1,2,3,4,6,7,8) (3,4,8) (1,6) (1,2,6,7,8,9) (0,1,2,3,4,5,6,7,8) (0,1,4,5,6,7) (1,3,5,7) {32,81,60,54,40,37,63,59,71,14}
+[...#.###] (3,5,6,7) (1,5) (1,2,3,4,5,6) (1,3) (0,1,2,3,5,6) (0,4,6) (2,3,4,5,6,7) (0,2,4,6,7) (0,5,6) (0,1,2,4,6,7) {63,40,64,49,60,63,95,49}
+[##..] (0,1) (0,2,3) (2,3) {3,1,5,5}
+[#...#.##.#] (3,4,8) (0,2,4,5,6,8,9) (0,3,7,8) (1,2,3,6) (6,9) (9) (1,2,5,8,9) (0,1,2,7,9) (1,2,3,4,5,6,7,8) (0,2,8) (0,1,2,4,5,6,7,8) (1,2,4,5,6,7,8,9) (2,4,5,9) {46,73,94,42,62,56,71,63,61,59}
+[...#.###] (0,2,3,4) (0,1,3,4,5,6,7) (0,1,2,3,4,5,6) (0,2) (0,1,6) (1,3,4,7) (1,3,4) (0,2,3,5,6,7) {136,154,20,55,54,2,118,21}
+[#.##.##.##] (1,2,3,9) (2,4,7) (0,4,6) (0,1,3,6,8) (0,2,3,4,5,6,7,8) (1,2,3,4,6,9) (3,9) (1,6,7) (0,3,5,7,8,9) (0,2,3,4,5,6,7,9) (0,1,3,4,5,7,8,9) {77,72,54,266,65,54,60,70,65,238}
+[##.##.##] (0,2,3,7) (0,1,3,4,6,7) (2,5) (1,2,3,5,6) (2,7) (1,5) (0,3,4,6) (0,4) (1,2,4,6) (0,2,3,4) {30,66,66,48,43,45,60,32}
+[.##..#] (0,1,2,4,5) (0,1) (0,4) (0,2) (3,4,5) (1,4,5) (0,3,4,5) {61,34,12,16,44,30}
+[....###] (3,4,5) (2,5,6) (0,1,2) (2,5) (0,1,2,5) (1,4) (0,1,2,3) (2,4) (0,3,4) {23,33,66,20,47,41,20}
+[...##.] (0,2,4,5) (1,3) (2,4) (2,3,5) (2,3,4) (3,4) (0,2,3,4,5) (0,3) {13,175,30,193,28,15}
+[##.#] (0,1,2) (0,1,3) {30,30,16,14}
+[.#.....##] (2,3,4) (3,6) (0,1,2,3,4,6,7,8) (0,2,3,4,8) (1,2,3,4,5,6,7,8) (0,1,2,4,5,7,8) (3,8) (0,1,2,4,5,6,7) (0,1,2,4,7,8) {55,47,57,52,57,14,38,47,61}
+[.#.....] (1,4) (0,1,5,6) (4) (3,5) (0,1,2,3,5,6) (0,1,2,3,4,6) {134,154,117,124,40,136,134}
+[#..###..] (0,1,3,7) (0,2,3,5,7) (1,2,6) (2,7) (0,4) (0,1,2,4) (0,1,2,3,4,5) {56,38,73,32,34,30,18,39}
+[##...##.#] (0,1,2,4,7,8) (0,3,4,6) (1,5,6,7,8) (0,4,6,8) (0,1,2,5) (3,4,5,7) (2,4,5,7) (1,3,7) {50,30,22,25,42,26,36,22,25}
+[#.###] (2) (1,2,3,4) (2,4) (3) (0,1) (1,2,3) (1) {18,47,31,27,19}
+[.###] (0,2,3) (0,1) (0,2) {137,7,130,17}
+[#...##...] (1,4,6) (0,1,3,4,6,7,8) (4) (1,3,8) (0,1,2,4,6,8) (1,2,3,4,5) (1,3,4,5,6,7,8) (1,3,6) (0,2,6) {35,69,47,56,61,29,51,17,46}
+[##..#] (1,4) (0,1,2) (0,2,4) (1,2) (0,1,3) (0,2,3,4) (0,1,4) {68,80,51,33,56}
+[..####] (3,5) (0,1,3,4,5) (2,3,4,5) (0,1,4) {23,23,17,35,40,35}
+[.###....] (0,1,2,7) (0,2,3) (1,4) (1,2,4,5,7) (0,1,2,4,6,7) (0,1,2,3,6,7) (0,1,2,3,4,5,7) {43,66,58,31,60,33,18,51}
+[..###.##..] (1,5,9) (0,1,3,4,6,8,9) (0,3,7,8) (0,2,4,6) (5,7) (0,7) (1,2,5,6,9) (0,1,3,6,7,9) {54,53,22,32,10,41,41,51,18,53}
+[#..#] (0,2) (1,3) (1) (0,1,3) (0,1) {19,18,5,3}
+[#....] (1,3) (2,4) (2,3) (1,2,3,4) (4) (0,1,2,4) {8,26,39,32,41}
+[#......##.] (1,2,3,4,5,6,7,8,9) (1,5,7,8) (3,4) (0,3,5,6,7,8,9) (1,2,3,9) (0,1,2,3,5,6) (1,3,6,7,8) (1,2,5) (1,2,3,6,7,8,9) (2,3,4,8) (2,3,5,6) (0,4,6,7,9) {32,101,110,147,60,80,102,86,98,76}
diff --git a/2025/in/day10.ref b/2025/in/day10.ref
new file mode 100644
index 0000000..dd91d7b
--- /dev/null
+++ b/2025/in/day10.ref
@@ -0,0 +1,3 @@
+[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}
+[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}
+[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}