Compare commits
No commits in common. "e064a666fa157457fb02e425756f1e0524078f53" and "ef8749ff599c2eb83790f7c10dfaaf4374526200" have entirely different histories.
e064a666fa
...
ef8749ff59
153
day10.py
153
day10.py
@ -1,153 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
# https://adventofcode.com/2025/day/10
|
|
||||||
|
|
||||||
from itertools import combinations
|
|
||||||
from pulp import LpProblem, LpMinimize, LpVariable, LpInteger, LpStatus
|
|
||||||
from pulp import lpDot, lpSum, value
|
|
||||||
|
|
||||||
# imports for function part2()
|
|
||||||
from itertools import product
|
|
||||||
from sympy import symbols, Matrix, solve_linear_system
|
|
||||||
|
|
||||||
|
|
||||||
f = open("day10input.txt", "r")
|
|
||||||
|
|
||||||
# regular input
|
|
||||||
input = f.readlines()
|
|
||||||
# testinput
|
|
||||||
#input = "[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}\n[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}\n[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}".split("\n")
|
|
||||||
|
|
||||||
|
|
||||||
# prep data
|
|
||||||
machines = []
|
|
||||||
for input_line in input:
|
|
||||||
line = input_line.rstrip("\n").split(" ")
|
|
||||||
machine = {}
|
|
||||||
|
|
||||||
# final state
|
|
||||||
fs = line[0][1:-1].replace(".", "0").replace("#", "1")
|
|
||||||
machine["fs"] = int(fs, base=2)
|
|
||||||
|
|
||||||
# switches
|
|
||||||
switches = []
|
|
||||||
for switch in line[1:-1]:
|
|
||||||
s = ["0"] * len(fs)
|
|
||||||
for i in [int(j) for j in switch[1:-1].split(",")]:
|
|
||||||
s[i] = "1"
|
|
||||||
switches.append("".join(s))
|
|
||||||
machine["s"] = sorted([int(s, base=2) for s in switches], key=int.bit_count)
|
|
||||||
|
|
||||||
# joltage req's
|
|
||||||
machine["j"] = [int(n) for n in line[-1][1:-1].split(",")]
|
|
||||||
|
|
||||||
machines.append(machine)
|
|
||||||
|
|
||||||
|
|
||||||
def print_machines(machines: list[dict]) -> None:
|
|
||||||
for i in range(len(machines)):
|
|
||||||
print(f"Machine no. {i}")
|
|
||||||
for k in machines[i].keys():
|
|
||||||
print(f"key:\t{k}\tvalue:\t{machines[i][k]}")
|
|
||||||
|
|
||||||
|
|
||||||
def part1_bfs(m):
|
|
||||||
for steps in range(1, len(m["s"])):
|
|
||||||
# check if current step no yields a solution
|
|
||||||
for c in list(combinations(m["s"], steps)):
|
|
||||||
lights = 0
|
|
||||||
for i in c:
|
|
||||||
lights ^= i
|
|
||||||
if lights == m["fs"]:
|
|
||||||
print(f"Success with combo {i} and step count of {steps}")
|
|
||||||
return steps
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
# my own attempt to solve each problem with sympy
|
|
||||||
# problem is that sympy computes not a minimum but a general solution
|
|
||||||
# So for each problem I have to back-substitute possible combinations for the free variables and find the minimum with brute force
|
|
||||||
# the function works, runs a long time, and the final solution is off by 1 :-/
|
|
||||||
def part2(m):
|
|
||||||
switches = [list(map(int, list("{0:b}".format(switch).zfill(len(m["j"]))))) for switch in m["s"]]
|
|
||||||
joltages = m["j"]
|
|
||||||
|
|
||||||
# define sympy symbols and equations
|
|
||||||
x = symbols(f"x:{len(switches)}", integer=True)
|
|
||||||
system = Matrix([[switch[j] for switch in switches] + [joltages[j]] for j in range(len(joltages))])
|
|
||||||
print(f"Equation system to solve: {system}")
|
|
||||||
|
|
||||||
# solve system with sympy
|
|
||||||
solutions = solve_linear_system(system, *x)
|
|
||||||
print(f"Solutions: {solutions}")
|
|
||||||
|
|
||||||
# isolate free variables
|
|
||||||
free_vars = [var for var in x if var not in solutions.keys()]
|
|
||||||
print(f"{free_vars=}")
|
|
||||||
|
|
||||||
# find smallest solution
|
|
||||||
smallest_sum = None
|
|
||||||
|
|
||||||
# loop over the cartesian product of sensible numbers for button presses times the number of free variables
|
|
||||||
for lv in product(range(max(joltages)), repeat=len(free_vars)):
|
|
||||||
current_sum = sum(lv)
|
|
||||||
for v in solutions.values():
|
|
||||||
for i in range(len(lv)):
|
|
||||||
v = v.subs(free_vars[i], lv[i])
|
|
||||||
if v < 0:
|
|
||||||
current_sum = -1
|
|
||||||
break
|
|
||||||
current_sum += v
|
|
||||||
if current_sum < 0:
|
|
||||||
continue
|
|
||||||
|
|
||||||
# check current sum
|
|
||||||
if not current_sum.is_Integer:
|
|
||||||
continue
|
|
||||||
elif not smallest_sum or current_sum < smallest_sum:
|
|
||||||
smallest_sum = current_sum
|
|
||||||
|
|
||||||
print(f"Smallest number of presses found: {smallest_sum}")
|
|
||||||
return smallest_sum
|
|
||||||
|
|
||||||
|
|
||||||
# Second attempt: solving each problem with pulp, a Python library for linear programming
|
|
||||||
# runs blazingly fast, returns correct solution
|
|
||||||
def part2_pulp(m):
|
|
||||||
switches = [list(map(int, list("{0:b}".format(switch).zfill(len(m["j"]))))) for switch in m["s"]]
|
|
||||||
joltages = m["j"]
|
|
||||||
|
|
||||||
# define problem via pulp
|
|
||||||
problem = LpProblem("Advent of Code 2025, Day 10, Part 2", LpMinimize)
|
|
||||||
|
|
||||||
# define variables
|
|
||||||
x = LpVariable.matrix("x", list(range(len(switches))), 0, None, LpInteger)
|
|
||||||
|
|
||||||
# add objective function to problem
|
|
||||||
problem += lpSum(x)
|
|
||||||
|
|
||||||
# add equations to problem
|
|
||||||
for j in range(len(joltages)):
|
|
||||||
problem += lpDot(x, [switch[j] for switch in switches]) == joltages[j], f"Equation {j}"
|
|
||||||
problem.solve()
|
|
||||||
|
|
||||||
# the minimum number of steps necessary to reach the desired joltages is the sum of all variables
|
|
||||||
return sum([value(xi) for xi in x])
|
|
||||||
|
|
||||||
|
|
||||||
#print_machines(machines)
|
|
||||||
|
|
||||||
# solve part 1
|
|
||||||
print(sum(list(map(part1_bfs, machines))))
|
|
||||||
|
|
||||||
# solve part 2
|
|
||||||
steps = 0
|
|
||||||
for machine in machines:
|
|
||||||
# solve the machine using sympy and back-substitution
|
|
||||||
# steps += part2(machine)
|
|
||||||
|
|
||||||
# solve the machine using pulp
|
|
||||||
steps += part2_pulp(machine)
|
|
||||||
|
|
||||||
print(f"current total step number: {steps}")
|
|
||||||
print(f"final total step number: {steps}")
|
|
||||||
200
day10input.txt
200
day10input.txt
@ -1,200 +0,0 @@
|
|||||||
[..#.##.##] (0,1,2,3,4,5,8) (2,3,5,7) (2,5,6,7) (0,3,4,5,6,7,8) (0,2,4,6,7,8) (0,1,2,4,5,8) (0,2,4,5,6) (0,1,3,4,7,8) (0,1) (2,3,6) {55,25,58,54,55,53,44,43,42}
|
|
||||||
[##..#..] (0,3) (0,1,2,5,6) (0,1,2,4,5) (1,3,4,6) (1,2,3,4,5) (1,6) (1,2,4,5) (0,5) (3,4,5,6) {151,96,61,49,74,197,61}
|
|
||||||
[.##..#.] (4,5) (0,1,3,6) (0,1,2,3,5,6) (1,2,5) (0,1,4,6) (0,1,2,5,6) {31,42,19,20,8,21,31}
|
|
||||||
[#...###] (1,4,6) (0,2,4,5,6) (0,1,2,3,5,6) (2,3,5) (1,4,5) {11,18,26,16,27,27,27}
|
|
||||||
[##...###] (0,1,3,4,5,6,7) (1,2,3,5,6,7) (0,5) (0,2,3,5,7) (2,3,4,5,7) (1,3,4,5,6) (0,1,3,4,6) (1,5,6) (3,5) {158,192,24,194,174,81,192,35}
|
|
||||||
[.#.##...#] (1,2) (1,3,7,8) (1,2,5,7) (4,7) (1,2,4,5,6,7) (0,1,2,3,5,6,8) (0,3,4,5,6,7,8) {22,156,139,39,6,134,25,132,39}
|
|
||||||
[.#..] (0,1,2) (0,3) (1,2) (3) (0,2) {47,24,44,16}
|
|
||||||
[#...#] (1,2,3,4) (0,2) (0,1,2,3) {4,2,6,2,2}
|
|
||||||
[..#.] (1,3) (0,3) (0,2,3) {33,7,14,40}
|
|
||||||
[.#.#..##.#] (0,4,5,6) (2,7) (4,5) (0,1,2,3,4,5,6,7) (0,1,2,3,5,6,7,8) (1,3,8) (1,3,5,9) (0) (0,2,3,4,6,8) (0,8) (4,5,6,8) (0,1,4,5,6,7,8,9) (0,2,3,4,5,6,7,9) {82,38,35,35,52,58,60,39,51,9}
|
|
||||||
[##.##] (0,2,3) (1,2) (1,2,3) (0,1,4) {22,22,36,36,4}
|
|
||||||
[#####....] (0,1,2,4,5,7) (6) (4,5) (0,1,2,5,6,7,8) (0,3,5,6,7,8) (0,1) (0,2,5,8) (0,1,2,3,4,6,8) (8) (1,3,4,6) (1,4,8) {163,146,35,26,33,46,40,33,39}
|
|
||||||
[..#.##...] (1,2,6,7,8) (1,2,5,6,7,8) (0,1) (0,1,3,4,5,8) (1,3,4,5,7) (2,3,4,6,7,8) (3,4,5) (0,3,6,8) {17,36,16,23,21,34,18,21,22}
|
|
||||||
[..#.] (0,2) (1,2) (0,2,3) (0,3) (0,1) (0) {26,9,14,12}
|
|
||||||
[.#.#] (1,3) (0,2,3) {13,16,13,29}
|
|
||||||
[#....#.##.] (3,8) (2) (1,2,5,6,8) (0,1,3,4,5,6,8) (1,2) (0,3) (0,5,9) (7,8) (1,4,9) (0,1,3,4,5,7,8,9) (4,6,7,8) (1,5) {26,36,20,20,29,32,28,23,34,18}
|
|
||||||
[#.####] (0,1,2,4) (1,2,3) (0,1,3) (1,3) (0,4) (5) (3,4,5) (1,5) {32,58,12,42,25,24}
|
|
||||||
[..#.##..##] (0,3,4,7,8) (0,1,3,4,5,6,8,9) (2,3,4) (6,9) (0,1,2,4,5,6,9) (0,5,7,8,9) (4,5,8) (4) {39,29,29,34,84,46,31,10,39,31}
|
|
||||||
[.#..#..] (1,4,5) (3,5,6) (2,5) (0,2,3,4,6) (1,3,4,5,6) (0,4) (0,1,4,5,6) {22,40,8,28,45,64,45}
|
|
||||||
[#...] (0) (0,1) (0,2) (0,3) (2) {39,14,23,5}
|
|
||||||
[.##..#] (0,1,4) (0,1,4,5) (1,2,5) (0,2,5) (1,2,4,5) (0,1,2,3,5) (2,3) {53,63,51,31,34,49}
|
|
||||||
[.#...] (1,2,3,4) (3) (0,3,4) (1) (0,2) (1,3) (3,4) {23,149,16,50,18}
|
|
||||||
[.#..#] (0,1,2) (0,2,3,4) (1,3) (2,3) (1,4) {10,31,17,15,22}
|
|
||||||
[##########] (0,2,5,6,7) (2,5,6,7,9) (0,3,4,5,6,8) (1,4) (1,6,8) (2,3,4,5,6,7) (0,1,2,3,4,6) (0,1,3,4,8) (1,4,5,6,7,8,9) (2,4,5,6,8) {42,49,54,54,87,55,77,27,57,11}
|
|
||||||
[.#.#.#.] (2,4) (0,5) (1,2,5,6) (0,1,3) (0,1,4,5,6) {22,25,13,3,23,25,22}
|
|
||||||
[.####..#] (3,5,6) (1,5,7) (0,3,4,7) (0,1,3,6) (0,2,4,6,7) (0,4) (0,1,3,5) {57,33,15,43,35,35,31,38}
|
|
||||||
[.##.#] (1,2,4) (0,1,3) (1,2) {7,35,28,7,9}
|
|
||||||
[####.] (0,1,2,3) (0,3,4) (0,2,3) (0,1,2) (2,3,4) {126,20,132,133,8}
|
|
||||||
[###..#...#] (3,6,7) (1,2,6) (0,2,3,4,5,6,9) (1) (0,1,2,5,6,7) (0,1,2,3,6,7,8,9) (0,1,2,3,5,6,8,9) (1,2,3,4,5,6,8,9) (0,5,6,8,9) (1,2,4,7,9) (0,3,8,9) (0,2,4,5,6,7,8) (2,3,5,6,8,9) {56,74,68,51,33,39,58,48,52,69}
|
|
||||||
[.#..##.##.] (1,3,5,7,8,9) (1,3,4,5,6,7,8,9) (3,8) (0,1,4,5,7) (1,3,6,8,9) (0,2,3,4,6,7,8,9) (4,7,8) (1,5) (0,1,2,3,4,5,6,8) (4,6,7,8) {27,60,19,56,49,44,47,39,74,29}
|
|
||||||
[......##] (0,1,2,7) (0,1,2,3,4,5,7) (0,1,3,4,6,7) (1,2,3,5,6) (0,2,3,6) (1,4,6,7) {47,50,46,60,35,26,56,36}
|
|
||||||
[..##.#..] (0,1,2) (0,4) (2,3,5,7) (0,2,3,4,5,6) (0,1,3,4,6,7) (0,1,3,6,7) (5,6,7) (0,4,5,6,7) (0,2,3) {253,33,46,51,226,48,55,50}
|
|
||||||
[.#.#] (0,1,2) (1,3) {0,7,0,7}
|
|
||||||
[#...#...#] (6) (5,7) (0,1,3,4,6,7,8) (0,2,3,6,7,8) (0,1,5,8) (2,7) (0,1,4,8) (4,5,6) (0,4,5,6,7,8) {44,16,26,15,27,45,48,59,44}
|
|
||||||
[#..##..] (0,1,2,4,5,6) (3,4,5) (0,1,3,4,5,6) (1,4,5) (2) (0,1,3,4,5) (1) (2,3,5) (0,1,4,5,6) {44,54,30,20,55,57,40}
|
|
||||||
[..###...##] (0,2,5,6,8) (0,1,2,3,4,5,8,9) (2,3,4,5,7) (0,3,4,5,6,8,9) (2,7,9) (0,1,2,3,4,5,7,8,9) (1,7) (1,2,3,4,5,6,7,8,9) {30,37,48,54,54,59,39,57,44,48}
|
|
||||||
[..##.###] (0,1,2,3,4,5) (1,2,3,4,5) (0,4,5,7) (0,1,4,5,6,7) (0,2,4,5,7) (0,1,5,6) (1,4) (2,3,4,5,7) (0,3,5) {58,53,56,58,72,83,10,29}
|
|
||||||
[..###...] (1,2) (0,1,3,4,5,7) (3,4,5) (1,3,4) (0,6) (0,1,2,3,6) {10,39,20,29,23,4,10,0}
|
|
||||||
[.#....##] (2,3,5) (1,2,3,4,6) (1,3,7) (1,2,3,4,6,7) (4,5) (0,4,6,7) {15,29,25,36,47,21,33,26}
|
|
||||||
[...#..] (0,1,2,4) (1,5) (0,2,5) (1,3) (0) (2,4,5) (0,2) (0,1,4,5) {168,183,164,18,158,39}
|
|
||||||
[...#.....] (0,2,4,5,6,7,8) (1,5,7,8) (0,1,6) (1,2,3,7,8) (0,4,5,6,7,8) (0,3,5,6,7,8) (1,2,6,7,8) (0,1,3,6,7,8) (1,2,3,4,5,6,7) (2,4) (0,1,2,7) {81,77,60,51,37,50,76,94,74}
|
|
||||||
[###..#..#.] (2,9) (0,2,4,6,7,9) (3,4,5,6,7,9) (0,2,3,6,7,8,9) (0,1,3,5,6,8,9) (0,1,4,5,6,7,8) (0,4,6) (3,8) (0,3,4,5,6,8,9) (0,1,2,5,6,8,9) (3,7) (0,1,2,5,6,9) {125,72,82,167,78,94,144,79,176,120}
|
|
||||||
[#.#####.] (0,1,3,5,7) (1,5,7) (2,4,6) (0,1,3,4,7) (1,3,5) (0,4,5) (0,1,2,4,6) (1,2,4,5,7) (1,2,3) (3,5,6) {48,69,36,41,57,59,20,47}
|
|
||||||
[#.#.#] (0,2,4) (1,2,4) (0,1,2) (1,3) {169,37,181,18,174}
|
|
||||||
[..##..##] (1,2) (1,3) (0,4,5,6) (5,6) (1,3,6,7) (1,2,3,4,6,7) (1,2,3,7) (1,4,5,6) (0,2,3,5) {27,67,44,56,34,45,54,33}
|
|
||||||
[###.....] (0,1,5,7) (0,2) (0,2,4,5,6,7) (3,4,6,7) (0,1,2,4,5,6,7) (1,7) {48,27,36,0,21,33,21,39}
|
|
||||||
[#....##] (1,2,4,5,6) (1,2,6) (0,2,3,5) (2,3,4,5,6) (0,2,4,5,6) (0,2,6) (0,1,3,5) (4,5) {35,43,65,13,36,46,63}
|
|
||||||
[.########] (3,4,5,6,7,8) (0,1,2,3,4,5,6) (0,2,5,6,8) (1,2,3,4,5,6,8) (1,3,4,5,6,7,8) (0,3,5,6,7,8) (0,2,3,4,6,8) (0,1,2,4,5,6,7) (2,3,5,6) (0,1,7) {38,39,37,69,69,58,75,49,56}
|
|
||||||
[##..#.] (2,3,4,5) (0,1,3,5) (1,5) (0,3,4) (2,4) {13,18,27,26,30,31}
|
|
||||||
[#...##.] (2,3) (1,4,6) (0,1,2,3,4,5,6) (1,5) (3,6) (3,5) {4,25,9,28,16,20,28}
|
|
||||||
[#####] (2,4) (0,3,4) (0,4) (2,3) (1,2,3) {16,0,24,29,24}
|
|
||||||
[.#.#.#] (1,2,5) (0,2,4,5) (0,1,2,3,4) (1,3,4) (0,4) {19,39,25,27,38,17}
|
|
||||||
[#......] (0,3,4,5,6) (1,5) (0,1,3) (0,2,3,6) (0,1,2,4,6) (1,2,3,4,5) {39,36,47,36,38,21,37}
|
|
||||||
[.##.####] (0,6) (0,5) (3,7) (0,1,3,4,6,7) (2,4,6) (1,2,3,5,7) (4,6,7) (1,4,5,6) {28,36,9,21,53,23,60,37}
|
|
||||||
[.###...] (3,4,5,6) (0,2,3,4,6) (0,2,3,6) (1,2,3,5) (2,4,6) (3,5,6) (0,4,5,6) (1,5) (1) {41,52,59,71,61,84,93}
|
|
||||||
[#..#..#.#.] (0,1,3,4,5,6,8,9) (0,3,6,8) (0,1,2,5) (4,5) (0,5) (1,2,3,6,7,9) (0,1,3,8) (1,3,9) {62,40,16,46,21,47,40,10,36,28}
|
|
||||||
[.#.###] (0,1,2,3) (1,3,5) (1,2,3,5) (2,5) (4) (0,1,2,3,5) (0,2,4,5) {28,26,48,26,19,48}
|
|
||||||
[#.##] (0,1,2) (0,2,3) (1) (2,3) {10,8,23,20}
|
|
||||||
[###..#.] (0,2,5) (0,1,2,6) (0,2,4,5,6) (0,3) (2,3,4,5,6) (1) (2,4) (2,4,6) {65,27,76,18,43,37,48}
|
|
||||||
[###..##] (0,1,2,6) (2,6) (1,3,6) (2,3,6) (2,3) (4,5) (0,1,4,6) {34,44,50,28,38,18,76}
|
|
||||||
[.##.#] (1,4) (1,2,4) (0,3,4) {2,14,4,2,16}
|
|
||||||
[###.] (0,1,2) (0,1,3) {115,115,12,103}
|
|
||||||
[..#.] (0,3) (2) (1,3) {17,16,9,33}
|
|
||||||
[....#.#] (0,3,5) (6) (1,2,4) (4,5,6) (1,2,4,5,6) (3,4,6) (0,2,3,4) (1,2,3,5,6) (4) {24,14,30,204,228,39,221}
|
|
||||||
[#..##] (2,4) (0,2) (0,1,2) (0,1,3,4) (2,3) (1,3) {30,27,176,172,18}
|
|
||||||
[#..#.#.] (0,1,2,4,5) (1,2,3,4) (0,1,3,5,6) (1,2,4,5,6) (3) {39,68,49,49,49,50,30}
|
|
||||||
[#.###.] (3,4,5) (2,4,5) (2,4) (0,2) (1,2) (0,3,4) (0,1) (0,3) {147,40,55,135,51,23}
|
|
||||||
[..##] (0,1) (0,2) (1,2,3) (1,3) (0,1,2) {206,195,38,6}
|
|
||||||
[#.#.##...#] (1,3,8,9) (3,5,6,7,8) (1,3,5,8,9) (0,2,8,9) (0,3,5,6,8) (1,3,4,5,7,8,9) (0,1,2,6,7,9) (0,2,3,4,5,6,7,9) (1,2,5,9) (0,1,4,5,6,7,8,9) (0,4,5,9) (2,6,7,8,9) {74,58,74,56,30,87,80,64,80,110}
|
|
||||||
[..#.] (1,2,3) (2,3) (2) (1) (0,2) {15,7,37,4}
|
|
||||||
[##..##] (1,2,3,4) (2,3,4) (0,2,5) (1,3) (2,3) {12,23,215,210,189,12}
|
|
||||||
[.####..#.#] (1,2,3,6) (0,2,3,4,5,6,8,9) (5,7,9) (1,2,3,5,6,7,8) (3,4,7) (0,1,2,3,4,5,7,8,9) (1,9) (1,3,6,8) (1,2,3,4,5,6,8,9) (0,6,7,8,9) (1,3,4,5,6,7) {23,69,48,69,45,68,64,52,57,56}
|
|
||||||
[..##] (2,3) (1) (0,2) (1,3) (1,2) {16,25,38,16}
|
|
||||||
[#.#....] (0,1,3,4,5) (1,2,3,5) (3,4,6) (1,2,4,5) (3,5,6) (0,3,5,6) (1,2,4,5,6) (0,1,2,5) {14,60,52,61,52,80,44}
|
|
||||||
[#..#..##.] (0,1,2,3,4,7) (1,2,3,4,5,6,7,8) (1,4) (2,4,5,6,7) (0,1,2,3,4,5,7,8) (0,2,3,5,6,7) (0,3) (2,3) (0,4,5,7) (3,5,6) {57,52,69,89,72,64,35,67,27}
|
|
||||||
[#.#.##] (3) (4,5) (1,2) (0,3) (4) (0,1,3,5) {15,12,10,176,20,8}
|
|
||||||
[....##] (3,4) (0,1,2,5) (0,3,4) (0,2) (0,1,2,3) (4,5) (1,2,5) {27,32,40,23,16,25}
|
|
||||||
[..#.###.##] (2,4,5,7,8) (0,6,9) (0,1,3,5,6,8,9) (0,2,4,5,6,7,8,9) (2,3,6,7,8) (0,1,2,3,4,5,6,7,8) (0,4,5,6,7,9) (2,3,4,5,7,8,9) (0,1,8,9) {78,34,37,32,54,67,69,57,62,76}
|
|
||||||
[#..##] (2,3) (1,4) (0,3,4) {5,13,16,21,18}
|
|
||||||
[####] (0,1,2,3) (0,2,3) {29,15,29,29}
|
|
||||||
[...#....##] (2,3,4,9) (3,5,9) (0,1,2,3,4) (2,3,5,6,7,8,9) (7,8) (3,4,9) (0,1,3,5,6) (0,1,2,6,9) (4,8) (8) (0,1,4,6) (1,2,3,4,8) (0,1,2,4,5,6,7) {74,74,68,60,69,42,68,31,27,51}
|
|
||||||
[##.###..##] (2,4,8) (5,6,7,8) (2,6,8) (0,4,6,7,8,9) (3,5,7) (0,2,3,4,5,6,8) (1,6) (1,2,3,4) (2,3,4) {9,20,52,44,39,24,38,15,32,0}
|
|
||||||
[.##...] (0,3,5) (1,2) (0,2) (0,4,5) (0,4) (0) (5) (1,2,3,5) {37,28,28,18,18,33}
|
|
||||||
[..#...#] (0,1,3,5) (0,2,5,6) (0,1,3) (4,5,6) (0,1,3,4,5,6) (2,6) (0,1,2,4,5) (0,4,5) {81,50,37,30,60,81,39}
|
|
||||||
[...######.] (0,3,4,5,6,7,8) (1,4,5,6) (1,2,3,6,7,8,9) (0,1,5,7,9) (9) (2,6) (4,5,8,9) (1,2,3,5,6,7,8,9) (0,1,2,4,5,6,7) (0,3,5,7) (0,2,3,5,6,8,9) (0,1,4) {69,48,28,33,49,67,44,46,31,55}
|
|
||||||
[###...##..] (2,6) (0,2,3,4,5,6,7,8,9) (0,1,2,5,6) (0,1,2,3,4,7,8,9) (0,1,4,5,6,9) (3,5) (0,2,9) (0,1,2,4,6,7) (6,9) (0,1,8,9) (0,1,2,3,4,5,8) {287,74,298,75,76,77,83,57,55,243}
|
|
||||||
[#....##.#] (1,3,5,8) (0,5,7) (0,2,7,8) (0,1,2,3,4,5,6,7) (5,7) (5,6,8) (1,7,8) (0,2,3,4,5,7,8) (0,3,4,5) (0,2,5,6) (0,6,7,8) {97,42,58,58,42,113,72,92,88}
|
|
||||||
[.#.##.#.#.] (2,6) (0,2,3,4,5,8,9) (0,1,3,5,6,7,8,9) (0,1,2,3,4,5,7,9) (2,9) (0,3,6,7,8) (1,2,3,5,7,8,9) (1,4) (0,1,3,4,5,6,7,8) (5,7,9) {61,61,46,71,58,59,52,61,62,42}
|
|
||||||
[###.###.] (0,3,5,6) (0,3,5,7) (1) (1,3,4,6) (0,1,4) (0,2,3,5,6,7) (3,4,7) (2,3,4,5,6) {177,24,153,190,33,178,180,152}
|
|
||||||
[#######.] (1,2,4,7) (1,2,3,5,6,7) (0,1,2,5,7) (2,3,6) (0,1,2,3,4,5,6) (0,1,2,5,6) {36,54,65,40,13,53,44,38}
|
|
||||||
[.#.#] (0,1,2) (1,3) {102,122,102,20}
|
|
||||||
[.####.] (3,4) (1,2) (0,3,4) (1,4,5) {2,33,13,109,129,20}
|
|
||||||
[...##..##] (0,1,2,3,5,6,7) (0,1,4,6) (0,1,5,8) (3,7,8) (1,2,3,4,5,6,7) (0,3,7,8) (0,1,2,4,6,7,8) (1,2,4,5,6,7,8) {52,189,182,51,167,168,187,198,165}
|
|
||||||
[.##..#..] (0,1) (1,2,3,6) (2,3,4,6,7) (1,2,6,7) (0,1,2,4,5,7) (0,4,7) (2,5,6,7) (2,3) {21,39,56,45,19,7,30,23}
|
|
||||||
[#.###] (1,2) (0,2,3,4) (0,1,2,3) (0,2,3) {166,30,177,166,141}
|
|
||||||
[#.##] (2,3) (0,1) (1,2,3) (0,2) {18,34,19,18}
|
|
||||||
[#.###.##.] (0,2,3,4,5,8) (1,2) (4,6) (0,3,4,6,7,8) (2,4,8) (0,3,5,7,8) (0,3,4,5,6,7,8) (0,6,7) (1,5,8) (0,1,2,4,5,8) (5,6) {45,16,203,26,216,51,33,29,229}
|
|
||||||
[.##.....##] (0,2,3,4,5,6,8,9) (0,1,2,5,6,7,8) (0,1,7) (6,7) (0,1,2,3,4,5,7,8,9) (3,4,8,9) (8,9) (0,1,2,3,4,5,7,8) (0,1,2,3,5,6,7) (2,4,9) (5,6,9) (0,1,2,5,6,7,9) {64,45,69,71,65,67,54,46,72,81}
|
|
||||||
[.#..] (0,2) (1,3) (0,1) (1) (0) (1,2) {26,182,5,14}
|
|
||||||
[#.##] (0,1) (0,1,2) (3) (0,2,3) (1,3) {36,44,22,52}
|
|
||||||
[##....] (1,4,5) (0,1,3,5) (1,2,4) (0,2,4) {16,33,9,15,19,25}
|
|
||||||
[#.##.##.#] (0,6) (3,8) (2,6,7) (0,1,2,4,6,7) (0,1,4,5,6,8) (0,1,2,3,4,7,8) (0,3,5,6,7) (0,3,6,8) (0,1,2,4,5,6,7) (0,6,7) (0,1,4,6,7) {68,52,47,45,52,18,67,61,50}
|
|
||||||
[##...] (0,3,4) (0,1) (2,3) (0,1,2,4) (0) {30,10,27,23,14}
|
|
||||||
[##.....#] (0,2,3,4,5) (1,2,6) (3,4,6,7) (0,1,7) (3,6,7) (0,1,2,3,4,5,7) (1,2,3,5) {132,43,133,170,134,132,39,64}
|
|
||||||
[##.#] (0,1,3) (0,1,2) {160,160,12,148}
|
|
||||||
[.#######] (0,1,3,6) (1,2,3,4,5,6,7) (0,1,3,5) (2,4,5) (0,1,2,4,6,7) (0,2,3,5,6,7) (0,1,2,3,4,6,7) (0,6,7) (1,6) (0,1,4,6) {92,83,64,61,62,37,111,75}
|
|
||||||
[#...] (0,1,3) (3) (1) (0,1,2) (0) (2) {22,21,5,25}
|
|
||||||
[.##.##] (2,3) (0,2,3,4) (0,1,3,5) (0,1,2,4) {28,8,34,40,21,7}
|
|
||||||
[##.#.#.#] (2,3,4,5,6,7) (0) (0,1,2,3,7) (0,1,4,7) (3,4,6,7) (1,4) (2,4,5,6,7) (2,6,7) {28,31,58,41,84,36,75,91}
|
|
||||||
[.#....] (2,4,5) (0,3) (0,1,2,4) (0,1) (0,2) (0,1,2,3,4) {239,31,31,216,23,6}
|
|
||||||
[#...###] (3,4,6) (1,2,4) (4,5,6) (0,2,3,5) (0,2,3,5,6) (0,4,5) (1,2,3,4,5) (1,2,3,4,6) {26,16,39,44,47,50,35}
|
|
||||||
[....##..] (0,3,4,5) (0,1,4,7) (2,6) (0,2,3,4,5,6,7) (1,2,3,4,7) (0,3,4,5,6,7) {22,21,37,31,37,16,22,27}
|
|
||||||
[##.##] (3,4) (2,3,4) (0,1,2,3) (0,1,3,4) (0,3) (0,2,4) (0,2) {65,17,46,56,52}
|
|
||||||
[.....#..#.] (0,1,2,4,6,7,8) (1,3,4,7) (2,4,9) (0,2,4,5,8,9) (0,4,5,7) (0,3,7,8,9) (0,1,2,3,6,8,9) (1,4,5,7,8) (1) (0,1,2,3,4,6,7,9) (6) {44,58,40,46,72,29,16,65,54,54}
|
|
||||||
[#.#.] (1,2) (0,3) (0,2) (0) (0,1,2) (2) {40,24,43,4}
|
|
||||||
[###...#..#] (2,5) (1,5,6,7) (1,2,4,6,8) (2,7,8) (1,6) (0,2,3,4,5,6,8,9) (1,7,8) (4,6,7,9) (1,3,4,7,8,9) (0,1,2,3,6,7,9) (0,6) (0,3,4,6,7,9) (1,3,5,6,7,8,9) {51,78,53,62,53,28,91,71,49,62}
|
|
||||||
[.#...#.] (0,1,4,5) (5) (0,1,2,3,6) (1,2,3,4,6) (0,6) (0,1,4) {177,180,29,29,168,17,43}
|
|
||||||
[...###.] (0,1) (3,4,5,6) (0,1,3,4,5,6) (1) (5,6) (2,4) (0,2,4) (0,1,3,4,5) (2,3,5) {40,38,33,68,71,76,47}
|
|
||||||
[#.###] (0,3) (0,2,3,4) (0,1,2,3,4) {35,9,20,35,20}
|
|
||||||
[#.#.#...#] (0,1,2,4,5,6,7) (5,6) (1,3,4,6) (0,1,2,5,6) (2,3,6,7,8) (0,1,2,3,4,5) (0,1,6,8) (0,2,4,6,7,8) (0,2,7) {68,57,78,37,47,42,91,59,34}
|
|
||||||
[###...#.##] (0,1,2,3,6,7,8,9) (4,6) (2,4,5,6,7,8,9) (0,1,4,5,6,7,8,9) (0,1,2,8,9) (0,2,4,5,6,7,8,9) (3,8) (1,5) (0,1,2,3,5,7,8,9) (1,7) (1,2,3,4,6,7,9) {203,209,52,45,202,212,222,222,238,220}
|
|
||||||
[..##...##.] (1,2,3,4,5,6,8,9) (2,3,7,8) (2,5,7) (1,2,3,4,5,6,7,9) (0,1,8,9) (0,1,2,4,8,9) (1,4,8) (0,2,6,8,9) (1,5,9) {26,59,48,21,40,40,20,30,29,57}
|
|
||||||
[.#.#..#...] (1,2,3,4,6,7,8,9) (0,2,4,6,9) (4,6,9) (0,1,2,5,6,7,8,9) (0,2,3,6,8) (0,7) (2,5,6,7) (0,1,5,6,7,8,9) (2,3,5,7,9) (1,2,6) (0,1,2,4,5,6,7,8) (4,6) {78,39,88,28,43,53,107,63,56,56}
|
|
||||||
[..#.#.] (2,4) (2,3,5) (1,4,5) (0,3,4,5) (0,1,3,5) (0,1,2,4) {35,33,41,34,55,47}
|
|
||||||
[...#...###] (1,3,6,8) (0,2,3,5,7,9) (0,1,6,7,8,9) (1,2,3,6,8,9) (0,1,3,7,9) (3,7,8,9) (0,2,3,4,7,8,9) (1,4,6,8) (1,6,9) {43,71,34,75,24,16,66,59,80,79}
|
|
||||||
[##.##] (0,1,2) (0,1,3,4) (1,4) {22,38,14,8,24}
|
|
||||||
[..#..#.] (0,1,2,3,4) (0,1,3,4,5) (1,4,5,6) (1,4) (0,1,2,5,6) {30,44,11,29,43,32,13}
|
|
||||||
[.#.#] (0,1,2,3) (1,3) (2,3) {17,28,21,32}
|
|
||||||
[#.#.] (0,2) (1,2,3) {4,10,14,10}
|
|
||||||
[..##.#] (0,3) (0,1,2,4) (2,3,5) (1,2,4,5) {12,4,14,22,4,14}
|
|
||||||
[##...#....] (1,3,4,6,7,8) (6,9) (0,1,2,3,4,6,9) (2,4) (0,1,2,3,6,7,8) (0,1,2,3,4,5,6,8) (0,3,4,6,8,9) (0,1,2,3,4,5,7) (5,6,7) (1,3,4,5,6,8,9) (0,3,6) {54,37,35,58,41,25,73,35,36,34}
|
|
||||||
[.#######] (1,3,6,7) (1,4,5) (0,3,4,6,7) (0,6,7) (1,3) (2,3,5,7) (2,4) {30,39,16,51,42,13,41,44}
|
|
||||||
[##....##.#] (6,8) (1,3,4,5,6,7) (1,2,3,4,5,6,7,8) (1,2,4,5,7,9) (0,1,2,5,6,7,9) (0,2,3,4,5,6,8,9) (0,1,5,6,7,8) (1,2,3,4) (2,9) (0,1,3,4,5,6) (0,2,5,6,7) (0,1,4,6,7,8,9) (1,2,3,8,9) {86,110,111,69,82,117,119,93,75,74}
|
|
||||||
[.#......#.] (1,7,8) (1,2,3,4,6,8) (1,2,3,4,5,7,8) (1,5,9) (2,3,4,5,6,7,8,9) (1,8,9) (0,1,2,3,4,5,6,9) (3,5,6,7) (0,3,5,6,9) (1,2,3,6,9) {31,61,64,81,53,60,74,25,42,66}
|
|
||||||
[#..#...] (1,3,4,5,6) (0,3,4,6) (2,6) (2,4) (1,4,6) (1,2) (2,3,4,5) {14,21,37,38,57,24,50}
|
|
||||||
[#####..] (0,1,2,3,4) (3,5) (4,6) (0,6) (2) (0,1,4,5) {26,23,38,20,144,7,124}
|
|
||||||
[#.#...##] (1,2,4,6) (0,1,2,4,5,6,7) (0,2,3,6) (1,4,6,7) (0,3,4,6,7) (1,5) (3,6) {41,58,39,46,59,31,87,43}
|
|
||||||
[##.#...#.] (0,6) (0,1,3,7) (1,5) (1,2,3,5) (0,1,2,5,6,8) (0,1,2,3,5,7) (0,1,2,4,6) {220,226,27,210,5,25,17,203,8}
|
|
||||||
[.#.##] (1,3,4) (0,3) (0,2) (0) (1,3) (0,1) (0,1,3) {49,32,20,37,10}
|
|
||||||
[#####...] (0,1,2,3,4,6,7) (0,1,2,7) (2,3,4) (4,5,7) (0,1,2,3,5,6) (0,1,4,5,7) {46,46,56,50,43,29,30,29}
|
|
||||||
[.###...#] (1,2,4,7) (0,2,4,6,7) (2,3,6) (5,6) (1,2,3,4,5,6) (3,6) (4,7) {10,17,41,33,34,16,55,30}
|
|
||||||
[.#.###...] (5,6,7) (1,4,7) (1,3,7,8) (0,2,5,6) (4,5) (0,1,2,4,7,8) (0,1,2,3,4,5,7) (1,2,4,5,7) {39,72,49,33,65,48,12,83,31}
|
|
||||||
[..#.#] (0,2,3) (0,1,2) (1,2) (0,3,4) {40,28,45,21,4}
|
|
||||||
[.#.#...] (1,2,3,5,6) (0,1,2,6) (0,2,3,5) (2,3) (0,1,2,3,5) (2,3,4,6) (0,1,2,4,5) (0,1,3,4,5,6) (1,3,4,6) {193,220,227,96,192,196,81}
|
|
||||||
[.#...] (0,1,2,3) (2,4) (1,2,4) {3,18,23,3,20}
|
|
||||||
[#.#...###] (0,6) (1,4,8) (0,4,5,6) (1,2,4,6,7) (5,6) (0,1,5,6,7,8) (2,3,4,5,6,7,8) (0,2,7,8) (0) (3) (1,5) {61,60,35,30,48,71,80,53,57}
|
|
||||||
[#.##.##.] (7) (0,3,4,5,6,7) (0,3,4) (2,5) (1,3) (0,3,6,7) (0,1,4,5,6) (1,2,3,6,7) (2,3) {44,30,32,61,34,31,52,41}
|
|
||||||
[####..####] (2,4,5,7,8) (0,4,5,6,8) (1,4,5,6,7,8,9) (0,1,4,5,6,7,8,9) (1,3,4,5,7,9) (0,1,2,3,4,5,9) (3,7) (0,1,2,3,6,9) {37,48,37,39,55,55,42,58,45,48}
|
|
||||||
[..#.##...] (4,5) (0,2,7) (0,2,3,5,6,7,8) (0,1,4,7) (2,3,7,8) (0,1,2,3,4,6) (0,1,2,3,5,6,7,8) (1,3,6,7) (3,5) {41,34,53,59,17,38,40,75,38}
|
|
||||||
[..##..] (1,5) (0,5) (2,4,5) (0,2,4,5) (1,2,3) (0) {27,19,166,1,165,184}
|
|
||||||
[##..] (0,3) (0,2,3) (0,1,2) (1,3) {24,32,23,26}
|
|
||||||
[##.##] (3,4) (0,4) (0,2,3) (1,3) {29,1,15,24,22}
|
|
||||||
[#....#.##] (0,1,3,6,8) (0,6,8) (1,5,7) (0,1,2,3,4,5,6,8) (1,2,3,4) (5,7) (0,2,3,4,5,6) (1,3,5,6) {46,42,27,36,27,53,51,26,44}
|
|
||||||
[##...#.#] (1,2,6,7) (0,1,3,4,5,7) (0,2,3,4,6,7) (1,2,3) (1,5,6,7) (3,7) (1,2,3,4) (0,1,4,5,6,7) {37,53,47,55,54,25,51,66}
|
|
||||||
[....#.#.#] (2,3,5,8) (0,1,2,5,7) (0,5,7,8) (1,7) (0,2,3,5,6) (0,3,6,7) (0,1,4,6,7) (1,2,3,4,6,7,8) {24,31,32,32,11,36,18,46,38}
|
|
||||||
[.####.] (2,4,5) (0,1,2,4) (1,3,5) (0,4) (1) (1,4,5) (1,2) (2,3,5) {7,142,137,25,30,48}
|
|
||||||
[#.#####] (3,6) (0,2,3) (0,1,3,4,5,6) (0,1,2,3,4,6) (0,4) {227,17,191,220,36,17,29}
|
|
||||||
[###..#] (1,4) (0,3) (0,1,4) (1,2,3,5) (1) (3,4,5) (0,1,4,5) (1,2,4,5) {38,79,31,53,72,56}
|
|
||||||
[#.#.#] (0,1,3,4) (0,1,2) (0,4) (3,4) (0,2,3,4) (0,3,4) (0,2,4) {49,22,18,18,42}
|
|
||||||
[...#..] (3) (0,4) (5) (0,1,4) (2,5) (1,4,5) (0,2,4) (3,4,5) {29,29,106,31,59,153}
|
|
||||||
[#.#.###.] (0,2,6) (0,1,5,7) (3,6,7) (6,7) (0,1,2,4,5,6) (0,1,3,6,7) (5) (5,6,7) (3,4) {38,29,12,49,20,25,62,63}
|
|
||||||
[.##.#.] (0,1,3,5) (0,1,3,4,5) (0,1,2,4,5) (0,1,2,3) (3,4) (4) (1,5) (0,3,4) {183,185,150,191,49,41}
|
|
||||||
[#...###.] (0,1,2,3,4) (0,1,2,3,4,6) (0) (2,5) (3,4,5,6,7) (0,1) (0,1,3,4,5,6,7) (0,1,4,5,6,7) (1,4,6) (1,2,3,4,6,7) {46,55,22,31,55,44,51,31}
|
|
||||||
[.###..#.#] (0,2,3,4,7,8) (2,3,6) (0,2,5,6,7,8) (1,2,4,7,8) (1,5) (0,3,5) (1,8) {24,33,36,31,17,23,19,23,40}
|
|
||||||
[..#.##..] (0,1,3,5,6) (4,6) (0,2,6) (2,5,7) (1,2,4,7) (1,2,3,4,5,7) {23,216,215,209,203,217,26,208}
|
|
||||||
[.#.#..] (2,3,4) (3,4) (0,5) (1,3) (0,2) {10,0,18,24,24,4}
|
|
||||||
[###.#.####] (0,5,8,9) (1,5,6,7,8) (1,6) (5,7) (1,2,4,6,8) (0,2,3,4,7) (2,3,4,5,7) (0,2,3,4,7,8,9) (0,1,2,3,4,6,7,8) {28,23,20,13,20,46,23,42,45,25}
|
|
||||||
[..##..] (0,5) (1,2,3,4,5) (3,4,5) (1,2,4,5) (1,3,4,5) (0,1,4,5) (0,1,2,3,4) {35,46,35,29,52,61}
|
|
||||||
[.....##] (0,1,4,5,6) (0,1,2,5,6) (5,6) (0,1,3,4,5) (0,1,2,3,6) (0,1,5) (1,2,3,5,6) (4,6) (2,3) {73,93,76,58,36,83,98}
|
|
||||||
[..#####..] (0,1,2,5,7,8) (0,4,6,7,8) (1,3,4,5,6) (2,5,7) (0,3,5,6,7) (1,5,8) (1,3) {37,220,10,226,217,220,229,42,26}
|
|
||||||
[####.#] (0,1,2,4,5) (2,3) (0,1,5) (0,4) {198,198,195,9,186,198}
|
|
||||||
[..#..#.] (3,4) (0,2) (0,3,5,6) (0,2,3) (0,1,2,3,4,6) (1,2,4,6) (0,2,5) {44,17,47,39,35,4,18}
|
|
||||||
[.###..##.] (0,1,2,3,5) (0,7) (0,1,2,3,5,6,8) (0,1,4,6) (1,5,8) (3,4,6,8) (1,2,3,5,6,7,8) (1,2,5) (0,2,3,5,6,8) (5,7) (0,1,2,3,4,6,8) {90,92,78,180,125,103,177,50,178}
|
|
||||||
[.#.##.] (2,3,4) (0,3,4) (0,1,2,3) (0,1,2,4,5) (2,3) {24,13,36,46,25,1}
|
|
||||||
[####...#.#] (0,1,7,8) (5,9) (2,7,8) (4,6,7,8) (0,1,4,6,9) (0,1,2,3,5,6,7,9) (3,6) (5,8) (0,1,2,3,6,8,9) (0,1,2) (0,1,2,3,5,7,8,9) {33,33,45,32,5,30,27,37,48,38}
|
|
||||||
[#....] (0,1,2) (1,2,3) (0,1,4) (0,2,4) {28,39,37,16,12}
|
|
||||||
[##..#] (1,3,4) (0,1) (1) (0,4) (1,2) (3,4) {17,29,9,25,41}
|
|
||||||
[.##.##.##] (1,3,6) (0,1,2,3,4,5,6) (1,3,4,8) (1,6) (0,1,2,5,7) (0,1,2,7,8) (0,1,2,5,6,7,8) (0,4,8) (1,8) {45,59,25,25,45,22,29,20,57}
|
|
||||||
[.###..] (0,1,2,3) (0,4) (1,2) (0,5) (0) (1,2,3,4) (1,2,3,5) (1,2,3) {48,42,42,27,36,18}
|
|
||||||
[......##] (0,1,2,3,4,6,7) (2,7) (0,4,5,6,7) (2,3,4,5,6,7) (1,2,3,6,7) (3,4,5,7) (1,5,7) (1,3,4,5,6,7) {19,28,32,45,42,36,42,65}
|
|
||||||
[...#.##..#] (2,4,5,7,9) (0,2,3,5,6,8) (7,9) (2,6,8,9) (0,1,3,5,6,7,9) (0,2,7,8) (0,1,3) (4,6) (3,6,7) (0,2,3,5,6,7,9) (1,2,6,8,9) {84,36,69,71,167,45,230,67,48,53}
|
|
||||||
[##.###.##] (0,3,4,5,7,8) (0,3,4,5) (3,7) (1,3,5) (0,2,5,6,8) (1,4,7,8) (0,1,4,7,8) (2,6,7,8) {52,31,24,37,41,48,24,36,47}
|
|
||||||
[##.#] (1,2) (0,1,3) (0,2,3) {205,19,186,205}
|
|
||||||
[#....] (0,3) (0,1,4) (0,3,4) (1,2) (0,2,3) (4) (1,3) {27,21,13,39,13}
|
|
||||||
[##..#.#..] (4,5,6) (0,3,4,5,6,7,8) (1,3,4,5,6,7,8) (0,1,2,3,5,6,7) (1,2,6,8) (0,3,4,5,6,8) (2,4,5,6,7) (0,1,2,4,5,7) (1,2,3,4,6,7) (1,6,8) {184,214,195,205,69,219,244,211,62}
|
|
||||||
[.###....] (2,3,4,5,6) (1,3,4) (0,1,6) (0,5,7) (1,2,4,5,6,7) (1,2,4,5,6) (3,4,5,6) {27,50,34,25,51,54,63,18}
|
|
||||||
[..##..] (1) (0,2,3,4) (0,1,2,3,4) (1,2) (2,3,5) (0,3,4,5) {45,29,52,60,45,25}
|
|
||||||
[.#...] (0,1,3) (0,1,4) (1,2) (2,4) (3,4) (0,1,3,4) {141,155,15,14,148}
|
|
||||||
[##..] (3) (0,1) (0,2) (0,1,3) (1,3) (0,3) {58,32,17,46}
|
|
||||||
[##.###.] (0,4,5) (0,1,4,5,6) (0,2,5,6) (0,1,2,3) (1,2,3,4,6) (0,2,3) {45,29,39,25,16,25,28}
|
|
||||||
[#####] (1,2,4) (0,1,3) (0,1) (0,4) (1,2,3) (4) {41,62,31,36,27}
|
|
||||||
[#.##] (1,2,3) (0,1,2) (1,3) (0,3) (2) {22,22,27,34}
|
|
||||||
[..#.#] (1,3,4) (0,2,3,4) (0,2) (0,1,4) (2,4) {30,21,25,32,39}
|
|
||||||
[#..#.] (1,4) (0,3) (1,2,4) {6,25,19,6,25}
|
|
||||||
[.#..] (0,2,3) (2,3) (1,2) (0,3) {11,6,12,11}
|
|
||||||
[##..#...] (0,1,4) (3,6) (0,1,2,5) (0,2,4,6,7) (1,2,3,4,5,7) (3,6,7) (2,3,5,6,7) (2,5,7) (4) (1,3,4,7) {31,32,156,40,37,138,39,160}
|
|
||||||
[##...] (1,2,3) (0) (3) (2) (2,4) (0,3) (0,1,3) {14,22,42,38,11}
|
|
||||||
[#.#....] (0,2) (0,1,6) (2,3,4,5,6) (0,2,4,6) (4) (0,2,3,6) (0,1,2,4,6) (1,4,5,6) (1,2) {56,44,58,12,55,17,60}
|
|
||||||
[###.##.] (0,1,3,5,6) (0,2,4,5,6) (0,1,2,4,5,6) (1,3) (2,4) (0,1,2,3,4,6) (0,1,2,4,5) {33,24,43,17,43,26,26}
|
|
||||||
[..#..#..#] (1,2,3,4,5,8) (0,2,3,5,6,7) (0,1,3,4,5,6,7,8) (0,1,5,6,8) (2,4,6,7) (1,2,3,8) (0,1,3,5,6,7) (0,2,4,5,6,7) (5,6,8) (1,2,5) {54,61,54,49,14,72,60,40,38}
|
|
||||||
95
day11.py
95
day11.py
@ -1,95 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
# https://adventofcode.com/2025/day/11
|
|
||||||
|
|
||||||
f = open("day11input.txt", "r")
|
|
||||||
#f = open("testinput.txt", "r")
|
|
||||||
|
|
||||||
graph = {}
|
|
||||||
for line in f.readlines():
|
|
||||||
node, outputs = line.strip("\n").split(":")
|
|
||||||
graph[node] = outputs.strip().split(" ")
|
|
||||||
|
|
||||||
|
|
||||||
def part1(current_path: list[str] | str, end: str) -> None:
|
|
||||||
if isinstance(current_path, str):
|
|
||||||
current_path = [current_path]
|
|
||||||
|
|
||||||
node = current_path[-1]
|
|
||||||
|
|
||||||
# check for dead ends
|
|
||||||
if node not in graph.keys():
|
|
||||||
return
|
|
||||||
|
|
||||||
# check if end node is reachable from current node
|
|
||||||
if end in graph[node]:
|
|
||||||
found_paths.append(current_path + [end])
|
|
||||||
return
|
|
||||||
|
|
||||||
# check all outputs
|
|
||||||
for output in graph[node]:
|
|
||||||
# avoid loops
|
|
||||||
if output in current_path:
|
|
||||||
continue
|
|
||||||
part1(current_path + [output], end)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def part2(start: str, end: str) -> int:
|
|
||||||
print(f"STARTING BACKWARDS SEARCH FROM {end} TO {start}")
|
|
||||||
num_paths = {end: 0}
|
|
||||||
|
|
||||||
def backsearch(target_node: str, current_node: str) -> int:
|
|
||||||
# init num_paths value for current node
|
|
||||||
num_paths[current_node] = 0
|
|
||||||
|
|
||||||
# find nodes with edges into current node
|
|
||||||
inputs = list(filter(lambda n: current_node in graph[n], graph.keys()))
|
|
||||||
|
|
||||||
# check if current_node is a dead end
|
|
||||||
if len(inputs) == 0:
|
|
||||||
return
|
|
||||||
|
|
||||||
# loop over input nodes
|
|
||||||
for node in inputs:
|
|
||||||
# check if node is the target node
|
|
||||||
if node == target_node:
|
|
||||||
num_paths[current_node] = 1
|
|
||||||
|
|
||||||
# input node was visited already
|
|
||||||
elif node in num_paths.keys():
|
|
||||||
num_paths[current_node] += num_paths[node]
|
|
||||||
|
|
||||||
# input node was not yet visited
|
|
||||||
else:
|
|
||||||
backsearch(target_node, node)
|
|
||||||
num_paths[current_node] += num_paths[node]
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
backsearch(start, end)
|
|
||||||
return num_paths[end]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# part 1
|
|
||||||
found_paths = []
|
|
||||||
part1("you", "out")
|
|
||||||
print(len(found_paths))
|
|
||||||
|
|
||||||
# part2
|
|
||||||
svr2dac = part2("svr", "dac")
|
|
||||||
print(svr2dac)
|
|
||||||
dac2fft = part2("dac", "fft")
|
|
||||||
print(dac2fft)
|
|
||||||
fft2out = part2("fft", "out")
|
|
||||||
print(fft2out)
|
|
||||||
svr2fft = part2("svr", "fft")
|
|
||||||
print(svr2fft)
|
|
||||||
fft2dac = part2("fft", "dac")
|
|
||||||
print(fft2dac)
|
|
||||||
dac2out = part2("dac", "out")
|
|
||||||
print(dac2out)
|
|
||||||
|
|
||||||
print("final result:", svr2dac * dac2fft * fft2out + svr2fft * fft2dac * dac2out)
|
|
||||||
647
day11input.txt
647
day11input.txt
@ -1,647 +0,0 @@
|
|||||||
dfa: nbz qhk kzw
|
|
||||||
nzm: ors
|
|
||||||
coh: hvt mrm yvu
|
|
||||||
grm: jon
|
|
||||||
jcu: dco reg
|
|
||||||
hgd: zum ets rml
|
|
||||||
yqr: gbd you dev oki
|
|
||||||
zia: fft gpd
|
|
||||||
wgs: mwd
|
|
||||||
rma: smb
|
|
||||||
pfh: jgr
|
|
||||||
kva: wkb elg
|
|
||||||
ggl: qcf hvt
|
|
||||||
egb: hzs dwx
|
|
||||||
nwk: out
|
|
||||||
owz: nwk abc
|
|
||||||
loe: adu roz vis
|
|
||||||
qdw: npt you dev
|
|
||||||
esy: pbj gyu nph jeh
|
|
||||||
fdg: ykn epk jau
|
|
||||||
piz: dxz jbc swk
|
|
||||||
bby: pxp
|
|
||||||
qcf: enj qhf sav siy tbn ccn
|
|
||||||
req: ckp lew
|
|
||||||
you: vhr jzm onn muy wsz pba nqx chd uvn fgl leo tvv ajb
|
|
||||||
epk: gbd npt dev oki
|
|
||||||
ttu: hzs dwx weu dsm
|
|
||||||
ajb: knu
|
|
||||||
zis: owr wie sdo
|
|
||||||
baz: icr xxa
|
|
||||||
wof: hht wwo hpk
|
|
||||||
yde: aha acu gob
|
|
||||||
ugq: bpa
|
|
||||||
gxo: muw gcw dca kja
|
|
||||||
cnf: swk
|
|
||||||
kby: spx suh ats
|
|
||||||
qgt: php zqq jva pkm
|
|
||||||
oeh: huq ahv gun van
|
|
||||||
osl: qcf hvt yvu
|
|
||||||
hya: gob szv aha ors acu
|
|
||||||
vlc: lfr vfm xsh
|
|
||||||
hqt: ptd nid
|
|
||||||
ifl: yvu qcf
|
|
||||||
nba: ddz hsk are wkt
|
|
||||||
gob: xsh vfm lfr
|
|
||||||
ckc: zia tub
|
|
||||||
biu: qrc
|
|
||||||
ekm: wgs mit
|
|
||||||
oki: jcu nqx mok uvn pph pfh ajb tvv vhr onn avk jzm vcb muy pba qvl chd ssk leo dnj nno fgl wqz vyw wsz
|
|
||||||
ytg: isi thh csk
|
|
||||||
fwt: xzk guu obh
|
|
||||||
ivc: xog
|
|
||||||
pkm: xxa icr
|
|
||||||
wux: qcf yvu hvt mrm
|
|
||||||
yjo: spx
|
|
||||||
zqq: xxa ptd icr
|
|
||||||
scc: xsh
|
|
||||||
jbc: bby grt
|
|
||||||
ssk: ugq rhm
|
|
||||||
epo: bgi avt vrq
|
|
||||||
hmi: awf
|
|
||||||
uhe: xog ble
|
|
||||||
dla: yaa shj
|
|
||||||
hok: ryk anu qqm mag zes uhe ygh kaj jif syl dla qdf nle vao udl dvq xil
|
|
||||||
ors: lfr dhl xsh
|
|
||||||
vrt: xsh lfr
|
|
||||||
onn: wfl
|
|
||||||
xhi: smb
|
|
||||||
wol: nqc fga frw
|
|
||||||
mfc: wyu hhq
|
|
||||||
uku: obh xzk wcz
|
|
||||||
vyw: ekm
|
|
||||||
tmh: mrm
|
|
||||||
lfr: lvh dly ibi yee ywp ksa ogz rog zph fks nnp qnp zsg drv
|
|
||||||
vhh: dhl
|
|
||||||
rhb: jur cgb
|
|
||||||
ovf: dln bvr
|
|
||||||
azm: vzw yfz osl bmb
|
|
||||||
ken: vso ybh ifl ofa
|
|
||||||
for: scc icp
|
|
||||||
fuj: nmg zia dls
|
|
||||||
scb: ijp ekw
|
|
||||||
lme: mod ygu
|
|
||||||
cev: til yox axf
|
|
||||||
fks: red qip sda
|
|
||||||
szv: vfm dhl xsh
|
|
||||||
ygf: vnf xvj hgd
|
|
||||||
ygu: icr ptd xxa
|
|
||||||
zzz: qbf kik
|
|
||||||
weh: out
|
|
||||||
ljf: xvj ybc
|
|
||||||
php: ptd nid
|
|
||||||
wsx: rgq
|
|
||||||
wnb: snh wct
|
|
||||||
suh: vfm
|
|
||||||
are: ilu
|
|
||||||
qec: yuj lwk tso
|
|
||||||
uys: vip
|
|
||||||
guu: out
|
|
||||||
nkj: loi jfl ejf
|
|
||||||
ddw: asd yot owz
|
|
||||||
tid: bgi qzw xiv
|
|
||||||
dmu: kgk gxo ebz yaa
|
|
||||||
ptd: der inq jwg piz klp qag mtj yyf emp foa fgy ift zii lwe ddd gbz
|
|
||||||
qhv: dfd tnj vkj
|
|
||||||
nmv: mwb vkj dfd
|
|
||||||
isi: uba izt mdn xhi
|
|
||||||
jau: npt gbd oki
|
|
||||||
bhg: vas rnl ora pnt
|
|
||||||
mcg: otw mfq
|
|
||||||
wkr: dev oki npt gbd
|
|
||||||
vis: oih
|
|
||||||
kzw: jur
|
|
||||||
wwo: ivg acz
|
|
||||||
ykn: you oki dev
|
|
||||||
oen: hvt
|
|
||||||
dsu: ytg cim
|
|
||||||
kzx: byq few btc rrz
|
|
||||||
mrm: qgx tbn dsu kbc ccn rci crh neh wnb enj sav xur mfc azx qgu qiq qhf apg siy
|
|
||||||
ucs: ead rhb
|
|
||||||
swk: grt bby
|
|
||||||
nvu: hvt qcf
|
|
||||||
jon: vhh vlc
|
|
||||||
few: out
|
|
||||||
vgb: lfr dhl xsh
|
|
||||||
gdd: hvt yvu
|
|
||||||
osi: jvm zmz ddw
|
|
||||||
thh: izt rma uba
|
|
||||||
dys: wbu ucs bpf
|
|
||||||
vso: hvt mrm qcf
|
|
||||||
npt: wqz fgl nno dnj leo ssk chd wsz vyw tvv ajb pfh pph uvn mok jcu nqx biu qvl pba muy vcb jzm avk onn vhr
|
|
||||||
dac: epk kbw jau
|
|
||||||
izj: mea hmi
|
|
||||||
qrc: jxk epv
|
|
||||||
vaf: qgt
|
|
||||||
ddd: bhg bcj
|
|
||||||
pph: jgr rhm ugq
|
|
||||||
nfh: qmt csk thh
|
|
||||||
qdf: hyp
|
|
||||||
ets: out
|
|
||||||
xgk: dhl xsh
|
|
||||||
boa: hpk hht
|
|
||||||
ppr: wof
|
|
||||||
ble: lht ugz bpr
|
|
||||||
dyg: qmt
|
|
||||||
dca: cpe eyi
|
|
||||||
hjm: nep yya kik
|
|
||||||
zes: hyp uzy
|
|
||||||
vgl: hfm
|
|
||||||
vkp: mgv iah
|
|
||||||
vsh: cts xtl xsp
|
|
||||||
rrz: out
|
|
||||||
ckp: hsk ddz kqe
|
|
||||||
mxe: yuj
|
|
||||||
tre: luh
|
|
||||||
paz: wwo
|
|
||||||
luh: wcg
|
|
||||||
bvv: vxi etm
|
|
||||||
qzw: fri
|
|
||||||
hht: vgl yjo acz kby
|
|
||||||
itk: sdc alv tjv
|
|
||||||
xyo: hpz axf yox yyn
|
|
||||||
xkh: hhq zdi wyu qix
|
|
||||||
kgk: muw
|
|
||||||
mit: fsf mvk mwd
|
|
||||||
qse: lqt lxh wil
|
|
||||||
ofa: hvt mrm yvu qcf
|
|
||||||
ior: icr ptd nid xxa
|
|
||||||
syz: duo
|
|
||||||
vrq: rxb pfk fri
|
|
||||||
snh: hyg nop vaf sgh
|
|
||||||
csk: uba rma izt mdn xhi
|
|
||||||
dpw: jur zod
|
|
||||||
xwy: lsk bbi
|
|
||||||
mvk: tlo itk juq
|
|
||||||
wbu: rhb
|
|
||||||
otw: loi tcv
|
|
||||||
gpd: vrt scc
|
|
||||||
xog: ugz lht bpr bvv
|
|
||||||
nbr: byq few
|
|
||||||
hzt: wsx fms
|
|
||||||
sda: tdh bye eif ggl
|
|
||||||
byq: out
|
|
||||||
gbd: uvn pph mok jcu nqx ajb tvv pfh onn avk jzm vhr pba qvl biu vcb muy chd ssk wqz leo nno dnj vyw wsz
|
|
||||||
rhj: paz
|
|
||||||
kaj: dfa zzp jky ost
|
|
||||||
zsg: rwo sqf xyg
|
|
||||||
reg: hoi epv
|
|
||||||
oee: bne
|
|
||||||
jha: gyu jeh
|
|
||||||
chd: wfl
|
|
||||||
yyf: poh zzz hjm
|
|
||||||
wil: ahz
|
|
||||||
dfd: oki you gbd npt
|
|
||||||
mfj: bgi vrq xiv
|
|
||||||
fri: vyd
|
|
||||||
qvl: jgr
|
|
||||||
oyd: vfm lfr dhl
|
|
||||||
smg: oki dev you gbd
|
|
||||||
bco: amy kzx
|
|
||||||
ats: dhl vfm
|
|
||||||
cqs: lfr
|
|
||||||
tzw: oen gnu qxh gdd
|
|
||||||
rwc: mrp jbc
|
|
||||||
iwx: qlz bss awf
|
|
||||||
dnj: reg qrc dco
|
|
||||||
ibi: vrm elg
|
|
||||||
dly: ykj qip sda
|
|
||||||
jur: izj hfj tid epo ckc gwu eei syz tlb
|
|
||||||
ast: php jva zqq uxg
|
|
||||||
rnl: ngy eiq
|
|
||||||
zzp: kzw hed lfk qhk
|
|
||||||
nkp: tnj vkj
|
|
||||||
viz: mvk
|
|
||||||
hpz: ptd
|
|
||||||
qip: eif bye
|
|
||||||
rwo: pth
|
|
||||||
mwb: gbd npt
|
|
||||||
qiq: vsh vca
|
|
||||||
prl: kzw lfk qhk
|
|
||||||
flo: dhl lfr
|
|
||||||
lkz: hhx
|
|
||||||
siy: sce
|
|
||||||
xtl: xlz guz
|
|
||||||
kgu: qtw ura wkr smg bwf
|
|
||||||
uun: out
|
|
||||||
gyu: ldh ttu
|
|
||||||
nep: mfq gvg
|
|
||||||
bpr: qec etm mxe
|
|
||||||
ltr: gbd npt oki dev
|
|
||||||
svr: yxc gwm hok
|
|
||||||
avk: sdn zpz vvt zhw
|
|
||||||
xyg: krb wcg
|
|
||||||
boh: nmv qhv nkp
|
|
||||||
rgo: jdt rhb ead
|
|
||||||
jva: xxa nid
|
|
||||||
tni: nmg tub zia dls
|
|
||||||
nei: vfm
|
|
||||||
izd: mvp kgx scb sjc
|
|
||||||
qpy: rwo sqf
|
|
||||||
qtw: dev oki
|
|
||||||
izt: lrw baz smb
|
|
||||||
jdt: zod cgb jur
|
|
||||||
ewt: iwx mea auv
|
|
||||||
lwe: bcj
|
|
||||||
qag: sjc
|
|
||||||
hgv: osi bws hhx
|
|
||||||
sce: sdo
|
|
||||||
cts: guz hqt
|
|
||||||
vzw: hvt mrm qcf
|
|
||||||
lrw: nid icr xxa
|
|
||||||
ivg: fzd suh spx
|
|
||||||
gun: tzw eia
|
|
||||||
ebz: muw kja
|
|
||||||
abc: out
|
|
||||||
apg: lkf vsh sif
|
|
||||||
xlz: xxa nid ptd icr
|
|
||||||
see: bmi
|
|
||||||
sdn: bsl rob
|
|
||||||
cai: van huq
|
|
||||||
lrg: qtw bwf wkr smg
|
|
||||||
vsy: gfb weh uun
|
|
||||||
acu: vfm xsh
|
|
||||||
bwf: gbd npt you dev oki
|
|
||||||
sdo: nid ptd xxa
|
|
||||||
mfp: qip
|
|
||||||
dls: gpd fft
|
|
||||||
nsc: ivf
|
|
||||||
vhr: mxw dco
|
|
||||||
ldh: dpw hzs weu
|
|
||||||
vwg: paz
|
|
||||||
yfz: hvt
|
|
||||||
rci: nfh dyg nqt
|
|
||||||
bbi: qcf mrm yvu
|
|
||||||
xkj: weh
|
|
||||||
juq: tjv alv sdc
|
|
||||||
kqe: gik clq ilu
|
|
||||||
jxk: bco
|
|
||||||
inq: zzz hjm poh
|
|
||||||
nqx: ekm aet uyh
|
|
||||||
blj: ior mod rgi
|
|
||||||
udl: jha var esy vqa zex
|
|
||||||
mok: vvt sdn
|
|
||||||
fsf: juq tlo hgf
|
|
||||||
qwi: mwb dfd
|
|
||||||
ora: ngy eiq
|
|
||||||
sav: zis mbp
|
|
||||||
axf: nid ptd
|
|
||||||
kik: otw
|
|
||||||
cxl: azm
|
|
||||||
nbz: jur
|
|
||||||
zmz: vkp okc owz
|
|
||||||
zum: out
|
|
||||||
eei: boa paz
|
|
||||||
nhm: uun gfb
|
|
||||||
shj: gcw
|
|
||||||
sow: lsk
|
|
||||||
byv: ybh ofa
|
|
||||||
anu: isj xog
|
|
||||||
tso: zod jur cgb
|
|
||||||
xdr: osl vzw
|
|
||||||
jky: hed kzw qhk nbz
|
|
||||||
klc: xdr fol
|
|
||||||
vas: eiq gys
|
|
||||||
ykj: bye tdh
|
|
||||||
dsm: zod jur cgb
|
|
||||||
van: tzw azs fkq
|
|
||||||
rux: bby grt mgw
|
|
||||||
nnp: vrm wkb elg
|
|
||||||
klp: kgx scb
|
|
||||||
pth: coh jpj nvu wmz tmh
|
|
||||||
ekw: fga frw
|
|
||||||
xsh: fks mfp vlq kva kqb gtw drv qnp
|
|
||||||
hyp: fvp nba lew
|
|
||||||
hde: bvv bpr ugz
|
|
||||||
weu: jur
|
|
||||||
nmg: gpd
|
|
||||||
yvu: crh ruf rci ccn xkh kbc dsu qgx tbn sav enj wnb neh azx mfc xur siy apg qhf qiq qgu
|
|
||||||
nno: zpz zhw vvt
|
|
||||||
gwu: dln bvr
|
|
||||||
vlq: sqf rwo
|
|
||||||
lxh: ahz lme blj
|
|
||||||
bcj: vas
|
|
||||||
kgx: ggc ekw wol
|
|
||||||
tus: pkm php jva zqq
|
|
||||||
fft: icp ymx vrt vgb scc
|
|
||||||
ahv: eia azs tzw fkq
|
|
||||||
hgf: esi tjv
|
|
||||||
dhl: tre ibi fks lvh qpy cai kqb oeh ywp
|
|
||||||
vcb: reg qrc dco mxw
|
|
||||||
yuj: jur cgb
|
|
||||||
emp: mvp
|
|
||||||
nbj: obh wcz eot
|
|
||||||
muw: mao cpe eyi ybf
|
|
||||||
nvy: vso ifl ybh
|
|
||||||
yvt: ljf llb eoc
|
|
||||||
auv: dxq qlz awf
|
|
||||||
jns: ucs
|
|
||||||
smb: ptd
|
|
||||||
icp: lfr vfm dhl
|
|
||||||
lvh: vrm
|
|
||||||
wct: hyg nop vaf
|
|
||||||
foa: fms
|
|
||||||
gik: jur zod
|
|
||||||
ugz: etm
|
|
||||||
hhq: dog xzr bne xyo
|
|
||||||
qdc: eoc
|
|
||||||
pnt: gys ngy
|
|
||||||
hed: zod
|
|
||||||
acz: fzd
|
|
||||||
lqt: lme ahz
|
|
||||||
ujd: qwi
|
|
||||||
xiy: vso ybh ifl
|
|
||||||
qlz: oyd nei cqs
|
|
||||||
ssl: yvu
|
|
||||||
jeh: egb ttu ldh
|
|
||||||
wkw: vlc
|
|
||||||
ubb: guz hqt
|
|
||||||
dev: onn wsz vcb biu mok ssk uvn chd fgl nno dnj leo
|
|
||||||
vca: xsp xtl cdb ubb
|
|
||||||
uvn: zpz zhw vvt
|
|
||||||
zph: zok yvz
|
|
||||||
pyk: vhh
|
|
||||||
hsk: clq gik
|
|
||||||
kja: ybf cpe mao
|
|
||||||
jgr: wkf bjz bpa yvt
|
|
||||||
der: nkp
|
|
||||||
kbw: dev you
|
|
||||||
fkq: gdd qxh gnu
|
|
||||||
ijq: sgh vaf
|
|
||||||
dgy: uxg jva
|
|
||||||
bss: wfz flo oyd
|
|
||||||
avt: fri pfk grm rxb
|
|
||||||
bne: axf
|
|
||||||
yya: nkj
|
|
||||||
xur: sce mbp
|
|
||||||
mxw: hoi epv
|
|
||||||
qhd: lxh
|
|
||||||
eot: out
|
|
||||||
rml: out
|
|
||||||
huq: fkq azs tzw
|
|
||||||
ost: hed kzw qhk nbz
|
|
||||||
fgy: scb
|
|
||||||
jif: xog isj hde
|
|
||||||
azx: dyg cim nfh ytg
|
|
||||||
wqz: wfl loe
|
|
||||||
uxg: nid xxa
|
|
||||||
zok: lsk bbi
|
|
||||||
fbt: uun gfb
|
|
||||||
xiv: hsb
|
|
||||||
icr: pyl inq cnf boh hzt gbz klp piz aoz pkd
|
|
||||||
qbf: nkj otw mfq
|
|
||||||
qmt: uba
|
|
||||||
rgq: gys
|
|
||||||
bpf: jdt
|
|
||||||
llb: vnf ybc
|
|
||||||
vvt: bsl
|
|
||||||
gys: you oki gbd npt
|
|
||||||
yyn: ptd nid xxa
|
|
||||||
adu: oih
|
|
||||||
owr: nid icr ptd xxa
|
|
||||||
xil: hde ble
|
|
||||||
ybc: rml ets zum
|
|
||||||
cdb: xlz hqt guz
|
|
||||||
rva: guu obh wcz
|
|
||||||
yvz: wux
|
|
||||||
mkh: fwt nbj
|
|
||||||
gtd: xgk vlc
|
|
||||||
vkj: oki dev gbd
|
|
||||||
qhf: zis
|
|
||||||
fka: adu uys vis
|
|
||||||
til: ptd icr xxa
|
|
||||||
pkd: bhg wsx bcj
|
|
||||||
jzm: aet ekm
|
|
||||||
jbt: req
|
|
||||||
knu: hhx bws
|
|
||||||
syl: zex esy var jha
|
|
||||||
clq: cgb
|
|
||||||
qix: xyo xzr cev
|
|
||||||
yee: xwy sow zok
|
|
||||||
zdi: dog
|
|
||||||
ddz: gik clq
|
|
||||||
qhk: cgb jur
|
|
||||||
tbn: qhd qys qse
|
|
||||||
vfm: qpy fks zph ogz nnp oeh qnp gtw drv lvh ibi dly ywp yee cai
|
|
||||||
bjz: eoc ljf llb
|
|
||||||
xpa: njk nbr hcw
|
|
||||||
lus: eia
|
|
||||||
dln: hya
|
|
||||||
uba: lrw
|
|
||||||
iah: out
|
|
||||||
mfq: ltr ejf
|
|
||||||
ura: dev you npt
|
|
||||||
ygh: zzp dfa prl ost
|
|
||||||
sif: xtl xsp cts cdb ubb
|
|
||||||
nid: der jwg pyl inq klp piz izd pkd boh hzt emp mtj qag fgy see foa rwc lwe aoz ift gbz ddd
|
|
||||||
fga: yqr qdw caw uud
|
|
||||||
ift: qhv nkp
|
|
||||||
dfi: gfb weh
|
|
||||||
ogz: sow zok xwy yvz
|
|
||||||
pfk: wkw pyk jon gtd
|
|
||||||
alv: out
|
|
||||||
leo: fka
|
|
||||||
fzd: xsh lfr vfm
|
|
||||||
uyh: wgs viz mit
|
|
||||||
vxi: tso lwk
|
|
||||||
wkf: ygf eoc ljf
|
|
||||||
ywp: lus
|
|
||||||
loi: you oki dev
|
|
||||||
bsl: mkh jmw
|
|
||||||
qys: lxh
|
|
||||||
xzr: yyn hpz axf yox
|
|
||||||
spx: xsh
|
|
||||||
mbp: owr wie
|
|
||||||
wkt: gik
|
|
||||||
qgu: ijq
|
|
||||||
rhm: bjz wkf qdc
|
|
||||||
gvg: ltr tcv jfl loi
|
|
||||||
obh: out
|
|
||||||
bpa: llb ygf
|
|
||||||
oih: nhm dfi vsy
|
|
||||||
ymx: vfm lfr xsh
|
|
||||||
lsk: yvu
|
|
||||||
nqt: isi qmt
|
|
||||||
hcw: few rrz btc
|
|
||||||
wcz: out
|
|
||||||
sqf: wcg pth krb
|
|
||||||
ruf: wct ijq snh
|
|
||||||
tdh: qcf hvt yvu
|
|
||||||
rob: mkh ivf
|
|
||||||
wcg: jpj nvu wmz coh
|
|
||||||
fvp: ddz kqe are
|
|
||||||
eoc: xvj
|
|
||||||
sdc: out
|
|
||||||
saq: fol
|
|
||||||
lkf: xsp xtl cts ubb
|
|
||||||
muy: aet ekm
|
|
||||||
ijp: fga
|
|
||||||
grt: lrg
|
|
||||||
poh: qbf kik mcg
|
|
||||||
nph: ttu
|
|
||||||
ryk: zex
|
|
||||||
qnp: cxl
|
|
||||||
zii: swk mrp jbc rux
|
|
||||||
jvm: asd owz
|
|
||||||
etm: lwk tso yuj
|
|
||||||
hoi: bco xpa kqt
|
|
||||||
duo: yde nzm
|
|
||||||
bmi: epk
|
|
||||||
azs: gdd qxh
|
|
||||||
zod: tni hfj rhj ewt pma dbc syz fuj gwu epo vwg
|
|
||||||
dxq: oyd nei cqs flo wfz
|
|
||||||
lcw: kbw epk jau
|
|
||||||
gcw: cpe
|
|
||||||
hpk: yjo kby vgl ivg
|
|
||||||
nqc: qdw uud yqr
|
|
||||||
mdn: lrw smb baz
|
|
||||||
hhx: jvm zmz
|
|
||||||
sxj: out
|
|
||||||
hvt: dsu qiq nvm apg ruf
|
|
||||||
dwx: jur zod
|
|
||||||
pba: hgv lkz
|
|
||||||
tnj: npt gbd dev oki you
|
|
||||||
esa: yya mcg
|
|
||||||
jmw: uku nud nbj
|
|
||||||
isj: bvv lht
|
|
||||||
ybf: jur
|
|
||||||
eyi: jur cgb zod
|
|
||||||
hyg: scl tus
|
|
||||||
wmz: yvu qcf
|
|
||||||
bye: qcf yvu mrm
|
|
||||||
red: ggl eif tdh ssl
|
|
||||||
ggc: nqc
|
|
||||||
fym: gxo shj kgk ebz
|
|
||||||
mgv: out
|
|
||||||
tlo: esi tjv
|
|
||||||
lwk: zod
|
|
||||||
aoz: zzz hjm esa poh
|
|
||||||
gwm: anu ryk dmu qqm uhe zes dys jif kaj jbt qdf dla jns dvq fym vao ivc udl
|
|
||||||
gtw: vrm wkb
|
|
||||||
sgh: tus dgy
|
|
||||||
ilu: zod jur cgb
|
|
||||||
dbc: iwx hmi
|
|
||||||
ybz: lxh wil
|
|
||||||
xvj: zum
|
|
||||||
hfj: zia
|
|
||||||
krb: nvu
|
|
||||||
vqa: pbj nph
|
|
||||||
yaa: muw kja dca gcw
|
|
||||||
elg: ken byv
|
|
||||||
btc: out
|
|
||||||
hsb: gtd vyd pyk
|
|
||||||
scl: jva
|
|
||||||
jwg: bmi fdg lcw dac
|
|
||||||
bvr: yde hya
|
|
||||||
cgb: fuj vwg ban tlb eei dbc syz ovf pma hfj ndm ckc gwu tid epo mfj ewt izj ppr rhj tni
|
|
||||||
hzs: cgb
|
|
||||||
rxb: vyd wkw jon gtd
|
|
||||||
awf: nei wfz flo
|
|
||||||
ahz: rgi mod ygu
|
|
||||||
kqt: hcw amy njk
|
|
||||||
cim: csk thh
|
|
||||||
vnf: ets
|
|
||||||
bmb: qcf
|
|
||||||
nvm: ybz qhd
|
|
||||||
mtj: dac lcw bmi
|
|
||||||
caw: npt
|
|
||||||
njk: btc rrz few byq
|
|
||||||
mea: qlz
|
|
||||||
rgi: icr
|
|
||||||
ejf: you gbd npt
|
|
||||||
ivf: rva uku nbj
|
|
||||||
lfk: zod jur cgb
|
|
||||||
bnb: nhm fbt
|
|
||||||
mwd: juq hgf
|
|
||||||
vip: xkj vsy nhm
|
|
||||||
pxp: qtw bwf ura wkr smg
|
|
||||||
mrp: bby mgw
|
|
||||||
qgx: hhq oee qix
|
|
||||||
wfz: xsh
|
|
||||||
ybh: hvt mrm
|
|
||||||
tjv: out
|
|
||||||
kbc: sif vca vsh lkf
|
|
||||||
eia: gnu gdd
|
|
||||||
xxa: jwg ujd pyl inq boh piz izd pkd fgy foa emp yyf mtj qag gbz ddd aoz ift zii
|
|
||||||
gnu: qcf mrm
|
|
||||||
aha: vfm xsh
|
|
||||||
pbj: ldh ttu
|
|
||||||
neh: oee wyu qix hhq
|
|
||||||
fms: rnl
|
|
||||||
gbz: poh zzz
|
|
||||||
wkb: nvy ken byv xiy
|
|
||||||
tcv: gbd npt oki dev you
|
|
||||||
uud: you oki dev npt gbd
|
|
||||||
asd: nwk abc
|
|
||||||
pma: tub
|
|
||||||
nop: scl dgy qgt ast
|
|
||||||
ead: zod
|
|
||||||
utv: owz yot okc asd
|
|
||||||
tub: fft gpd for
|
|
||||||
esi: out
|
|
||||||
nud: eot
|
|
||||||
roz: vip bnb
|
|
||||||
bgi: grm fri
|
|
||||||
nle: zex vqa
|
|
||||||
eiq: dev you
|
|
||||||
jpj: hvt qcf
|
|
||||||
yot: abc iah mgv
|
|
||||||
zex: jeh gyu pbj
|
|
||||||
ndm: dln duo
|
|
||||||
zhw: pka
|
|
||||||
wyu: xzr
|
|
||||||
qqm: req hyp uzy
|
|
||||||
epv: kqt
|
|
||||||
dco: epv
|
|
||||||
qxh: qcf hvt mrm yvu
|
|
||||||
tlb: wof paz boa
|
|
||||||
dvq: jha zex esy
|
|
||||||
wie: ptd
|
|
||||||
yox: icr
|
|
||||||
ksa: van gun ahv huq
|
|
||||||
skr: mrm hvt
|
|
||||||
mao: cgb
|
|
||||||
ban: auv mea hmi
|
|
||||||
frw: uud qdw
|
|
||||||
vao: prl zzp dfa
|
|
||||||
zpz: rob bsl nsc pka
|
|
||||||
vyd: xgk
|
|
||||||
eif: mrm yvu qcf
|
|
||||||
cpe: zod jur
|
|
||||||
aet: viz
|
|
||||||
enj: snh
|
|
||||||
dxz: mgw
|
|
||||||
mvp: ekw wol ggc
|
|
||||||
var: nph gyu
|
|
||||||
mgw: lrg pxp kgu
|
|
||||||
lht: vxi qec etm
|
|
||||||
mag: ucs wbu rgo
|
|
||||||
pyl: nkp qwi nmv
|
|
||||||
drv: klc cxl saq
|
|
||||||
mod: nid icr xxa
|
|
||||||
amy: rrz byq
|
|
||||||
dog: yox
|
|
||||||
wfl: vis uys
|
|
||||||
bws: utv jvm
|
|
||||||
wsz: ekm uyh
|
|
||||||
tvv: wfl
|
|
||||||
yxc: ryk dmu anu qqm uhe mag jbt jif qdf jns ivc fym dvq nle xil
|
|
||||||
hfm: vfm lfr dhl
|
|
||||||
crh: qse qys
|
|
||||||
kqb: cxl saq
|
|
||||||
okc: sxj iah mgv abc
|
|
||||||
fol: skr yfz osl
|
|
||||||
xsp: xlz guz
|
|
||||||
sjc: ekw ijp
|
|
||||||
pka: mkh ivf jmw
|
|
||||||
rog: zok xwy yvz
|
|
||||||
guz: xxa ptd icr
|
|
||||||
ngy: dev oki you npt gbd
|
|
||||||
xzk: out
|
|
||||||
gfb: out
|
|
||||||
fgl: lkz knu hgv
|
|
||||||
vrm: nvy xiy
|
|
||||||
jfl: gbd npt oki you
|
|
||||||
ccn: qse
|
|
||||||
lew: ddz
|
|
||||||
uzy: lew ckp nba
|
|
||||||
80
day12.py
80
day12.py
@ -1,80 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
# https://adventofcode.com/2025/day/12
|
|
||||||
|
|
||||||
import re
|
|
||||||
|
|
||||||
|
|
||||||
def prep_data(filename):
|
|
||||||
shape_re = re.compile(r"\d:")
|
|
||||||
region_re = re.compile(r"\d+x\d+:")
|
|
||||||
shapes, regions, quantities = {}, [], []
|
|
||||||
|
|
||||||
f = open(filename, "r")
|
|
||||||
lines = [l.rstrip("\n") for l in f.readlines()]
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
while lines != []:
|
|
||||||
line = lines.pop(0)
|
|
||||||
|
|
||||||
# shape
|
|
||||||
if shape_re.match(line):
|
|
||||||
tmp = []
|
|
||||||
# read shape lines
|
|
||||||
while True:
|
|
||||||
l = lines.pop(0)
|
|
||||||
if l == "":
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
tmp.append(l)
|
|
||||||
|
|
||||||
# parse shape
|
|
||||||
shape = []
|
|
||||||
for i in range(len(tmp)):
|
|
||||||
for j in range(len(tmp[0])):
|
|
||||||
if tmp[i][j] == "#":
|
|
||||||
shape.append((i, j))
|
|
||||||
shapes["shape-" + line[:-1]] = shape
|
|
||||||
|
|
||||||
# region & quantities
|
|
||||||
elif region_re.match(line):
|
|
||||||
tmp = line.split(" ")
|
|
||||||
regions.append(list(map(int, tmp.pop(0)[:-1].split("x"))))
|
|
||||||
quantities.append(list(map(int, tmp)))
|
|
||||||
|
|
||||||
return shapes, regions, quantities
|
|
||||||
|
|
||||||
|
|
||||||
def solve_part_1() -> int:
|
|
||||||
shapes, regions, quantities = prep_data("day12input.txt")
|
|
||||||
areas = [len(shape) for shape in shapes]
|
|
||||||
|
|
||||||
solvable, unsolvable, dont_know = 0, 0, 0
|
|
||||||
|
|
||||||
# loop over problems
|
|
||||||
for i in range(len(regions)):
|
|
||||||
board = regions[i]
|
|
||||||
quantity = quantities[i]
|
|
||||||
|
|
||||||
# simple solvability check
|
|
||||||
if board[0] * board[1] < sum(list(map(lambda a, q: a * q, areas, quantity))):
|
|
||||||
print(f"Problem {i} is unsolvable")
|
|
||||||
unsolvable += 1
|
|
||||||
|
|
||||||
# check if a tileset of 3x3 squares would fit in theory
|
|
||||||
elif (board[0] // 3) * (board[1] // 3) >= sum(quantity):
|
|
||||||
print(f"Problem {i} is solvable")
|
|
||||||
solvable += 1
|
|
||||||
|
|
||||||
else:
|
|
||||||
print(f"don't know about problem {i}")
|
|
||||||
dont_know += 1
|
|
||||||
|
|
||||||
print(f"{solvable=}")
|
|
||||||
print(f"{unsolvable=}")
|
|
||||||
print(f"{dont_know=}")
|
|
||||||
return solvable
|
|
||||||
|
|
||||||
|
|
||||||
# solve part 1
|
|
||||||
print(solve_part_1())
|
|
||||||
1030
day12input.txt
1030
day12input.txt
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user