diff --git a/10/ex1.py b/10/ex1.py new file mode 100644 index 0000000..67c8a3d --- /dev/null +++ b/10/ex1.py @@ -0,0 +1,47 @@ +from collections import deque + +def press(state, button): + new_state = list(state) + for i in range(len(button)): + new_state[button[i]] ^= 1 + return tuple(new_state) + +def bfs(queue, visited, goal, buttons): + while queue: + state, presses = queue.popleft() + if state == goal: + return presses + if state in visited: + continue + visited.add(state) + for button in buttons: + new_state = press(state, button) + if new_state not in visited: + queue.append((new_state, presses + 1)) + print('No solution found') + return -1 + +with open('input.txt', 'r') as file: + lines = file.readlines() + +count = 0 + +for line in lines: + line = line.rstrip('\n').split() + goal_text = line[0].strip('[]') + goal = [] + for char in goal_text: + if char == '.': + goal.append(0) + elif char == '#': + goal.append(1) + goal = tuple(goal) + buttons = [] + for i in range(1, len(line) - 1): + buttons.append(tuple(map(int, line[i].strip('()').split(',')))) + initial = tuple([0] * len(goal)) + queue = deque([(initial, 0)]) + visited = set() + count += bfs(queue, visited, goal, buttons) + +print(count) \ No newline at end of file diff --git a/10/ex2.py b/10/ex2.py new file mode 100644 index 0000000..e17e9f9 --- /dev/null +++ b/10/ex2.py @@ -0,0 +1,39 @@ +from pulp import LpProblem, LpVariable, LpMinimize, lpSum, PULP_CBC_CMD + +def solve(goal, buttons): # hence another thing i havent done in years + prob = LpProblem("Operation_Dumbass_Elves", LpMinimize) + x = [LpVariable(f"x_{i}", lowBound=0, cat='Integer') for i in range(len(buttons))] + + prob += lpSum(x), "Button Presses" + + for i in range(len(goal)): + constraint = [] + for j in range(len(buttons)): + M_ij = buttons[j][i] + constraint.append(M_ij * x[j]) + prob += lpSum(constraint) == goal[i], f"Constraint_{i}" + + prob.solve(PULP_CBC_CMD(msg=0)) + + return (int(prob.objective.value())) + + +with open('input.txt', 'r') as file: + lines = file.readlines() + +count = 0 + +for line in lines: + line = line.rstrip('\n').split() + goal = tuple(map(int, line[-1].strip('{}').split(','))) + buttons = [] + for i in range(1, len(line) - 1): + incs = map(int, line[i].strip('()').split(',')) + button = [0] * len(goal) + for inc in incs: + button[inc] += 1 + buttons.append(tuple(button)) + + count += solve(goal, buttons) + +print(count) \ No newline at end of file diff --git a/10/input.txt b/10/input.txt new file mode 100644 index 0000000..d5599a4 --- /dev/null +++ b/10/input.txt @@ -0,0 +1,167 @@ +[..##.#...#] (0,3,4,7,9) (0,1,9) (1,2,3,4,5) (0,1,3,7,8) (1,3,4,5,6,7,9) (0,1,2,4,5,6,7,8) (0,1,2,3,5,6,8) (1,2,4,5,8,9) (0,4,5,6,7) (0,2,3,5,8,9) (0,2,6,7,8,9) {87,70,44,58,58,67,44,54,55,54} +[..#.#.#..] (0,6,7,8) (0,1,2,3,4,5,6) (2,4,6) (0,1,3,7,8) (0,3,4) (0,2,3,6) (0,1,3,5,6,8) {81,41,31,72,36,21,55,29,44} +[#...#] (1,2,3,4) (0,2,3,4) (0,1,2,3) {151,33,171,171,158} +[#.#..#.##] (0,2,5) (1,3,4,5,6,8) (0,2,3,6,8) (0,1,3,8) (0,2,4,6) (3,4,5) (0) (0,1,2,4,5,6) (2,3,4,7) (0,3,4,5,6,7,8) (1,8) {172,41,141,26,128,38,128,4,40} +[..###.#..#] (1,2,3,4,5,6,8,9) (1,6) (1,2,5,7) (1,3,6) (0,3,4,5,6,9) (1,4,6,8) (2,3,4,5,6,7) (0,2,4,5,8) (0,2,4,5,9) (0,1,2,6,7,9) (1,3,5,9) {30,66,40,50,46,42,78,22,28,35} +[##...##.##] (3,5) (1,3,4,5,9) (5,6,7) (1,2,4,5,6,7,8,9) (0,1,4,5,6,7,8,9) (8,9) (0,2,5,9) (0,4,7,9) (1,3,5,7) (0) (0,1,2) {32,47,21,8,35,53,45,46,32,37} +[#..##] (0) (0,3) (0,2) (1,4) (1,2) (1,3,4) {18,185,25,4,172} +[...#] (0,1,2) (1,2,3) (1,2) (3) (0,2,3) {19,14,32,51} +[###..] (0,1,2) (0,3,4) (0,3) (1,2,4) {13,20,20,8,16} +[........#] (3,5) (1,2,5,6,7,8) (0,1,5) (1,3,4,8) (1,2,3,4,5,8) (0,1,6) (0,2,3,4,5,8) (2,3,4,5,6,7) (1,2,3,4,5) (1,2,3,4,5,7,8) (0,1,2,4,5,6,7,8) {65,110,97,89,92,122,60,55,80} +[.##..#..] (4,6) (0,1,3,4,6,7) (1,2,4,5,6,7) (0,2,3,5,7) (0,2) (1,2,3,6,7) (1,2,5) (0,2,3,4,5,6,7) {56,66,84,53,56,59,67,73} +[..#.] (1,2,3) (1,3) (0,3) {6,14,4,20} +[###..] (1,2) (0,1,2) (1,3) (0,1,4) {19,36,15,6,15} +[...##.] (0,1,2,4,5) (0,2,5) (0,1,5) (0,2,3,4) (0,4) {29,14,21,4,18,21} +[..#.#..##.] (0,2,3,4,8,9) (1,3,5,6,7,9) (2,5,6,7,9) (0,1,3,5,8,9) (3,5,9) (0,1,4,7,8,9) (0,2,7,9) (4,5,9) (0,4,5,8,9) {57,30,38,67,47,89,27,30,57,112} +[.#..##.#.] (1,3,6,8) (0,1,2,3,5,7,8) (0,1,2,5,6,8) (1,2,3,4,5,6,8) (6) (0,1,2,3,4,5,7) (1,3,4,6,7) (0,1,2,5,7) (0,1,2,3,4) (0,1,2,3,4,6,7) {50,60,53,48,42,25,45,40,13} +[.##.#.] (0,4,5) (2,5) (0,3,4,5) (0,2,3,4,5) (1,2,3,4) {28,4,175,18,32,189} +[.##.#] (3,4) (2,4) (0,2,4) (0,1,2) (0,1) (0,3) {51,30,28,9,12} +[.#.#...###] (5,8,9) (0,1,2,4,5,6,7,9) (2,6,8) (2,3,4,5,6,9) (3,4) (3,4,5,7,8,9) (4,9) (4,6) (3,5,6,7) (0,4,7,9) {152,4,39,49,214,44,55,164,33,193} +[#####.] (1,3,5) (0,1,2,3) (2,4) (0,1,2) (0,2,3) (3,4) (0,1,3,4) {48,39,55,60,26,9} +[#.##.#] (1,5) (2,3) (1,3,4) (0,1,4) (0,1,2,3) (1) (0,2) {28,53,35,32,13,8} +[...#.##] (2,4) (0,3,6) (0,1,2,3) (0,2,3) (0,1,2,5,6) (1,5) {46,42,51,30,5,31,16} +[#...##] (0,1,3) (3,4,5) (0,2,3,5) (1,3,4,5) (1) (0,2) {9,155,7,147,143,145} +[#.#.#.##] (0,1,2,3,4,5,7) (0,1,6) (2,3,7) (1,2,3,4,6,7) (0,1,2,3,4,6,7) (1,3) {43,59,36,52,24,20,23,36} +[#...####] (1,2,3,4,5,6) (0,3,5) (1,3,5) (0,2,5,6) (0,4,6,7) (1,3,4,5,7) (1,2,3,4) (0,2,3,6) {18,42,29,50,36,46,21,14} +[#..##] (2,4) (1,3,4) (1,3) (0,3) (0,2) (1,2,3) {14,39,30,49,30} +[...##] (1,2,4) (2,3,4) (1,3,4) (0,2,4) (0,1,2,4) (1,2) (1,3) {8,33,29,48,48} +[#...] (0) (0,2) (3) (1,3) (1,2) (0,1,3) {43,16,24,20} +[.......#.#] (0,1,3,4,5,6,7,8,9) (0,1,2,3,4,7,8,9) (0,5,6,8) (0,3,5) (4,5,8) (4,6,7,8,9) (2,8) (3,6,7) (0,1) (0,1,2,4,5,6,7,9) (6,7) (0,2,3,4,5,6,7,8,9) {247,209,47,244,247,253,271,268,251,238} +[.#...] (2,3) (4) (2) (1,2,4) (0,1,2,4) (0,1) {21,28,142,4,30} +[###.#] (0,2) (0,3,4) (1,4) (1,3) (0,1) {34,26,11,15,21} +[.###.#.] (1,5,6) (1,2) (2,3,4,5,6) (2,4,5) (1,2,3,5) (0,2,5,6) {16,26,47,12,9,35,26} +[#.##..] (0,1,3) (1,2,3,5) (0,1,3,5) (0,1,4,5) (0,2,3,4) (2,3) (1,3) (0,2,3,4,5) {52,52,34,70,34,42} +[.##.#####] (3,6,7) (0,1,2,3,4,5,6) (1,2) (1,3) (1,6,7,8) (1,3,5,7) (0,1,4,5,7,8) (3,7,8) (0,1,2,3,5,7,8) (0,1,4,5,6) {37,96,36,68,22,49,16,69,57} +[#.#..#.#..] (1,3,4,5) (4,6,8,9) (1,4,5,7,8,9) (0,1,2,6,9) (0,1,3,5,7) (0,2,4,9) (1,5) (0,1,2,3,5,6,7,8) (3,6,9) {21,56,9,25,46,50,33,31,38,55} +[##.##.#] (0,1,5) (0,1,4,6) (0,3,6) (2,3,6) (1,2,3,4) (0,1,2,3,5) {36,26,9,19,15,11,28} +[.##..#..] (0,1,2,4,5) (0,1,4,5,6) (0,4,6,7) (4,7) (0,1,2,4,6,7) (0,6,7) (2,3,4) (0,2,4,6) (0,1,3,5,6,7) {262,243,50,33,268,224,251,67} +[#.#..##] (0,2,4,6) (0,4,5,6) (0) (0,2,3,6) (3,4) (1,2,4,5,6) (0,1,2,3,5) (0,1,3,4) (3,5) {183,24,42,37,39,21,34} +[#.###] (0,2,3) (0,2,3,4) (1,2,4) {21,18,39,21,34} +[#.##] (0,1,3) (0,3) (0) (3) (2,3) (0,1,2) {30,13,7,26} +[##.#.#.##.] (1,3,6,8) (4,8) (0,2,3,4,5,7,8) (0,4,5) (0,9) (4,5) (0,1,4,5,6,7,9) (1,2,5) (2,3,8) (2,4,5,6,7,8,9) {43,42,23,32,58,45,43,32,54,38} +[.###...] (2,3,4,5) (0,1,2,4,5) (3,4,5,6) (1) (1,2,3) (0,4) (1,4,5,6) (0,1,2,3,5) (2,6) {40,76,67,49,47,52,27} +[..##.] (4) (0,1,3,4) (1,4) (0,2,4) (2,3) {31,35,30,39,66} +[####.###] (2,4) (5,6,7) (0,1,2,3,5,6,7) (1,2,3,7) (3,5) (0,3,6,7) (1,2,3,4) {129,127,144,154,17,152,147,156} +[##.#..] (0,1) (2) (0,3,5) (2,4) (3,4) (0,4,5) {23,6,20,17,14,17} +[.###] (0,1,2) (0,2) (2) (0,2,3) (0) {39,8,26,7} +[#...#..] (1,6) (3,5,6) (1,2,6) (0,3,5,6) (1,2,3,5) (2) (0,3) (0,3,4,5,6) (1,2,3) {28,32,50,51,6,31,38} +[.#.#.###] (1,3,4) (3,4) (1,6,7) (0,1,2,4) (0,2,3,4,5,6,7) (0,2,3,6,7) {26,40,26,47,56,13,30,30} +[.#.#.....] (3,4,5,6,7,8) (2,4,6,7) (0,1,3,5,6,7,8) (1,6,8) (0,3,4,5,7,8) (5,7) (0,1,2,6,7,8) {36,36,13,47,44,64,60,77,67} +[..##..] (1,4) (2,3,4,5) (1,2,4,5) (1,3,4,5) (0,2) (0,1,3,4,5) (1,2,5) (0,2,5) {135,177,56,141,166,171} +[#..##..#] (1,3,5) (3,7) (0,1,3,4,5,7) (3) (0,3,6) (0,4,5) (5,7) (0,2) (0,1,2,3,5,6) {49,34,15,68,19,46,25,35} +[#..#.#] (1,4) (4) (0,1,2,4) (0,1,3,4,5) (0,3,4) {24,20,4,20,46,14} +[#.#######.] (1,8) (0,4,5,7,9) (0,2,3,4,5,6,7,8) (1,3,7) (0,6) (1,5,6) (1,8,9) (2,3,4,5,6,8) (4,6,8) (1,7) (0,3,4,5,7) (3,6,7,8,9) (2,3,5,7) {63,149,19,41,63,59,48,171,55,28} +[##.###] (0,1,2,4,5) (0,2,3,4) (0,1,3,4,5) (1,3,5) {18,26,15,21,18,26} +[.#..##..##] (0,3,5,8,9) (0,1,2,3,4,5,8,9) (1,4,5,8,9) (1,2,5,6,7,8,9) (0,2,3,4,5,8) (0,3,4,5,6,7,8,9) (0,1,2,5,7,8,9) (0,2,4,5,8) (5,6) (7,8,9) (1,2,3,4,6,7,8) (0,5,8) {65,37,46,57,52,94,37,31,93,61} +[.#.##..#.] (2,8) (3,5) (1,3,5,6,7,8) (1,3,5,6,8) (0,4,8) (2,3,4,5,6,7) (0,1,2,3,4,6,7) (3,6,8) (1,2) (3,5,6,7,8) (1,3,4,7) {16,36,48,230,35,49,219,33,221} +[#.##.#] (1,2,4,5) (0,4) (0,1,4) (0,5) (0) (0,2,3,5) (1,3,5) (0,1,3,5) {45,51,16,35,28,56} +[....#.#] (0,1,4,5,6) (0,3) (3,4,5,6) (2,3,4,5) (0,1,2,4,5,6) (0,2,3,4) (4,6) {45,29,38,42,66,55,44} +[#####.] (0,2,3) (0,2) (1,3,5) (0,1) (1,2,3,4) (1,2,4,5) {29,31,35,31,18,1} +[###.####.] (0,7,8) (0,1,2,4,5,6,7) (0,1,3,4,6,7) (0,7) (3,4,5,8) (0,1,4,5,6,7,8) (0,1,2,4,5,6,7,8) (0,2,3) {82,54,50,40,69,62,54,64,55} +[#....#...#] (8,9) (1,3,8) (1,4,6,7,8) (0,1,4,5,6,7,8,9) (1,3,4) (0,1,2,3,4,5,6,9) (1,3,4,6) (0,2,4,5,6,7,8,9) (1,2,3,5,6,7,8,9) (2,3,4,7,8,9) {28,73,43,65,76,45,69,65,85,73} +[##.###] (0,1,2,5) (1,3,4,5) (0,1,2,3) (2,5) (0,2,3,5) (1,2,4) (0,1,3) {211,225,57,201,16,43} +[.##.#####.] (3,5,7,8,9) (3,5,6,8) (0,3,8) (1,4) (0,2,3,4,5,6,7,9) (0,1) (0,1,2,3,4,5,7,8) (2,3,5,6) (2,4,6,9) (0,4,5) (4,9) (0,1,2,3,4,5,7,9) {39,15,43,73,37,58,41,31,46,50} +[.#..##.] (1,2,3) (0,1,2,3,5,6) (1,2,4,6) (0,1,4) (0,3,4,5,6) (2,4,5) (1,2,3,4,5) {25,39,36,27,46,35,14} +[..##.#...] (0,3,4,5,6,7,8) (1,2,4,5,6,7,8) (2,3) (4,5,7) (1,2,3,4,5,6,7) (0,3,4,6,7,8) (1,2,3,6) {28,154,170,194,37,21,182,37,32} +[.#####.] (2,3,4,5,6) (0) (0,1,3,6) (0,2,3,4,6) (2,4) (0,1,4,5,6) (1) (0,1,2,5,6) (4,5) {35,33,53,43,51,28,51} +[##.##] (3,4) (1,3,4) (2,4) (2,3,4) (0,2,4) (0,3,4) (3) {30,178,45,221,249} +[###.] (0,1,3) (0,1,2) {9,9,5,4} +[#....] (0,2,3,4) (2,3,4) (0,1,3,4) {159,10,165,175,175} +[##..] (0,2) (0,1) (2,3) (0,3) {39,15,21,19} +[..#....] (0,1,3) (0,1,2,3,5,6) (0,1,5) (0,1,6) (0,1,3,4,6) {61,61,17,40,12,28,39} +[.#..#.#...] (0,1,2,4,5,6,7,8) (0,1) (2,4,7,8) (0,2,3,6,8) (1,2,4) (0,2,4,7) (0,1,3,4,5,6,7,8,9) (2,3,4,5,9) (0,1,2,6,7,9) (0,1,2,4,5,8) (2,3,6,8,9) (1,4) {64,61,209,168,192,145,58,53,49,169} +[#....###.] (0,3,4,6,7,8) (1,3,4,5,6) (1,3,4,5,6,8) (0,1,2,3,4,6,7,8) (1,8) (2,4,5,6,7) (1,2,5,7,8) (1,2,3,4,6,7) (2,8) (2,4,5,7) (2) {10,48,210,32,49,45,32,61,184} +[..###.#.##] (2,3,5,6) (0,3,6,7) (0,1,4,5,6,7) (1,2,3,4,6,7) (1,7,8,9) (3,9) (1,2,3,4,5,6,7,8) (1,4,5,7,8) (1,3,4,5,9) (0,1,2,4,5,6,7) {30,80,41,61,77,81,64,66,27,25} +[.#..#.#.] (0,1,2,3,7) (0,1,4,5) (0,2,3,4,7) (1,2,3,7) (0,7) (0,4) (1,2,3,4,6,7) (1,3,6,7) (0,1,2,5,6,7) (3,4,6,7) {70,61,61,65,60,23,33,80} +[..###] (0,1,3) (0,1,2,4) (1,4) {19,22,2,17,5} +[.##.] (0,1,3) (0,2) (0,1) (3) {18,11,7,9} +[##.#.#..] (1,4,5,6,7) (3,5) (0,1,3,4,6) (0,2,3,4,5,6) (0,1,2,7) (2,6) (2,3,5,7) {19,31,18,11,17,21,17,30} +[....##.##] (0,1,3,5,7,8) (4,5,7,8) (1,2,4,7) (6) (1,3,4) (1,2,3,4,5,8) (0,3,5,6) (5,8) (0,4,5,6,7) {26,38,19,39,55,75,18,41,58} +[.##...##] (4,7) (0,1,3,5,6,7) (0,2,3,5) (0,5,6,7) (3,4,7) (0,2,6,7) {27,3,14,15,20,18,22,42} +[.....#####] (1,9) (0,2,3,4,5,6) (0,2,3,4,5,7) (0,2,5) (0,1,3,8) (0,1,2,4,5,8) (4,6,7) (1,3) (5,7) (0,1,2,4,5,6,9) (2,4,5,6,7) (1,2,3,5,6,7,8,9) (4,7,9) {84,60,80,52,71,98,60,47,28,28} +[.##.##..#] (0,1,2,3,4,5,6,8) (5,6,8) (1,2,3,5,6,8) (1,2,3,6,8) (2,3,4,5,6,7,8) (2,4) (0,1,2,3,5,7,8) {24,49,75,58,37,67,63,22,76} +[##..##] (0,4,5) (0,1,4,5) (0,2) (0,1,2,3,4) {206,21,180,1,27,26} +[#...#..] (0,2,4,5) (0,1,4,6) (0,1,3,5,6) (0,4) (0,3,4,5) {56,22,16,25,46,41,22} +[....#] (0,1,2,3) (1,2) (0,1,2,3,4) {19,22,22,19,1} +[##....##] (0,5,6,7) (1,4) (1,3) (0,1,6,7) (2,3) (0,1,7) (1,2,3,4,6) {27,40,26,26,15,2,31,27} +[..#.#....] (0,2,4,5,6,7) (0,4) (8) (0,1,2,5,6) (0,2,3,4,5,7,8) (0,2,3,4,5,6,8) (0,1,2,3,5,6,8) (2,3,5,6,8) (0,4,5,7,8) (0,3,8) (1,8) {98,39,77,69,46,93,57,42,90} +[#..##.#] (2,3,4,5,6) (0,2) (0,1,5,6) (2,3,4,6) (0,1,3,5,6) {32,20,44,43,32,38,52} +[...##] (2) (0,2,4) (3,4) (1) (0,3,4) {34,132,25,29,47} +[#.####] (2,3,5) (0,2,4,5) (2,5) (0,1,3,5) {111,1,124,4,110,125} +[##..#] (3,4) (1,3,4) (0,2,4) (0,2) (0,1,3) (0,3) (1,3) {42,46,23,62,39} +[#.##.###] (1,3,4,6,7) (0,5,6,7) (1,2,3,4,7) (0,1,2,3,5,6) (0,5) (0,2,4) (0,1,2,3,4,7) (0,3,4,7) {89,60,58,80,82,40,43,71} +[####.#.#..] (1,3,5,7,9) (0,1,3,4,5,7,8,9) (0,1,5,6,9) (0,2,3,5) (3,9) (4,7,8) (0,2,4,5,6,7,8) (1,2,4,7,8,9) (0,1,3,4,6,7,8,9) (1,2,4,6,7) (0,1,2,3,5,6,7,8,9) (0,1,2,3,4,8,9) (9) {113,106,72,101,82,90,73,95,93,123} +[###.] (3) (0,1,3) (1,3) (0,1,2) (1,2) (0,1) {42,60,17,40} +[#..#.#] (2,3,4,5) (0,1,4) (0,4,5) (3,5) (0,1,4,5) (0,1,3,5) {48,40,17,44,47,59} +[..####....] (3,4) (0,1,3,4,6,7,8,9) (0,1,3,5,6,7,8) (1,3,4,6) (0,2,4,5,6,7,8) (0,1,2,5,8) (0,2,3,4,5,7,8,9) (0,1,4,8) (4,7,8) {52,42,32,38,51,37,35,37,56,16} +[###.##...] (1,3,5,7) (1,3,4,7) (0,1,2,5,6,7) (2,3) (0,2,4,6,7,8) (0,5,8) (0,3,8) (0,2,4,5,6,7,8) (2,3,5,7) (0,1,2,3,6,7,8) (0,1) {74,78,69,68,35,47,50,87,39} +[#.#...##.#] (0,1,7,9) (1,2,3,4,5,6,8) (2,3,4,5,6,7,8,9) (0,1,3,4,5,6,7,9) (2,6,8) (0,1,2,3,4,5,6,7,9) (2,6,7,9) (1,6,7,8) (0,1,2,3,6,7,9) {54,62,214,57,42,42,237,83,195,75} +[#.#.#.#...] (0,1,2,3,5,6,7,9) (1,2,3,4,5,6,7,8,9) (2,4,7) (5) (0,2,3,4,6) (1,2,7,9) (0,2,5,9) (3,6,7,8) (0,1,2,4,6,7,8) {38,37,62,223,37,17,234,244,208,27} +[...#.#..##] (2,3,5,6,7,8,9) (4,6) (5,8) (0,1,8) (0,1,3,4,5,6,9) (4,5,6) (0,3,4,5,6,7,8) (0,2,4) {23,9,21,40,33,60,52,33,52,27} +[########.] (0,1,2,3,4,6) (2,5,8) (0,1,2) (3,6,7) (0,1) (0,1,2,3,5,7) (0,3,5,6,8) (0,1,2,4,5,7,8) (0,1,3,6,7) (0,1,4,5) {72,68,50,22,46,55,20,30,35} +[..####.] (2,3,6) (4,5,6) (0,1,2,4,6) (0,2,5,6) (2,4) (0,4,5,6) {43,20,41,16,190,171,207} +[.#..##.##.] (1,3) (0,2,3,4) (2,4,6,7,9) (0,1,3,4,5,6,7,9) (0,2,6,8,9) (0,1,3,4,5,6) (0,2,3,9) (9) (5,6,8) (1,7) (0,1,3,4,5,6,7,8) (2,3,5,7,8) {66,47,67,90,60,69,70,52,41,66} +[##...] (0,1,3) (2,3) (0,2) (1,3) (3,4) {21,38,20,67,11} +[.#..##.##] (3,7) (0,3,4,5,6,7,8) (0,8) (2,5,6) (1,4,5,7,8) (0,2,7) (0,1,3,8) (2,4,6) {46,14,22,29,36,17,35,20,44} +[#.#.] (0,2) (1,2,3) {193,0,193,0} +[#.####.#] (0,1,2,3,4,5,7) (0,2,3,4,5,7) (0,1,3,4,6) (0,1,4,5,6) (1,2,4,5,6,7) (1,5,7) (0,3,6,7) (0,1,3,4,5,6) (2,4,6) {65,68,157,55,188,68,184,70} +[##.#..] (0,2,3,4,5) (1,2,4,5) (2,3,4) (1,2,3) {12,8,28,25,23,15} +[.#.#..] (1,3) (0) (2,3,5) (2) (1,2,3,5) (0,2,4) (0,4) {44,20,47,33,26,21} +[###.] (0,2) (2) (1,2) (0,1) (0,3) (1,3) {31,33,27,13} +[###..] (2,3) (1,2,4) (0,1,2) (0,4) {18,22,39,17,30} +[..#.] (2) (0,2,3) (0,1,3) (1,3) (0,1,2) {30,38,19,34} +[.....#.] (1,4,5,6) (0,1,2,4,5,6) (2,3,5,6) (0,2,5) (0,2,4,5,6) {27,133,42,15,136,164,151} +[.##....] (0,1,3,4,6) (0,2,3,4,5) (1,3,4,5,6) (0,2,3,4,6) (1,2,3,4) (1,3) {49,174,49,206,199,148,167} +[...###.] (1,2,4) (0,3) (1,2,4,6) (0,1,2,3,4,5) (0,2,4,6) (1,3,4,6) (2) (0,6) {42,48,54,41,54,18,28} +[#..##...#] (0,2,4) (0,2,3,4,5) (0,1,5,7,8) (0,3,5,6,7) (0,2,8) (0,5,8) (3,4,6,7,8) (6,8) {60,12,20,29,25,53,22,28,49} +[.###.###] (5,6,7) (0,2,3,4,5) (0,4,7) (0,2,3,4,6,7) (0,3,4,5,6,7) (1,4) (0,3) (1,2,3,4,6) (2,4,5,6) (0,1,2,4,7) {60,28,60,56,86,53,56,48} +[##..######] (0,3,4,5,8,9) (1,2,3,4,5,6,8) (0,1,3,4,7,8) (3,4,9) (0,1,2,3,4,7,8,9) (2,5,7,8,9) (1) (4,5,6,7,9) (0,1,2,3,4,6,7,9) (0,4,5,8,9) (0,1,2,4,5,7,8) (1,2,3,4,5,6,9) (0,2,3,5,8,9) {48,72,51,74,94,58,36,60,77,64} +[.#.#] (0,1,2) (1) (2) (2,3) {0,0,1,1} +[###..] (3) (0,1,3) (1,2,4) (3,4) (0,1,2) {33,44,26,22,12} +[.##.#..] (2,3,4,5,6) (1,2,3,5,6) (0,1) (2,4) (0,1,6) (0,1,2,3,4,5) (1,3,5) (0,2) (3,5,6) {36,66,60,66,38,66,40} +[####.#.] (1,2,3,5,6) (1,3,4) (1,2,4,5) (1,2,3,5) (0,2,3,4,5) (0,1,2,3,5) (0,1,2,4,6) (0,3,4,5) {46,66,74,81,49,80,16} +[#.#.] (2,3) (0,1,2) (0,3) (1) {12,29,26,20} +[....##.#] (0,1,3,4,5,6,7) (0,1,2,4,5,7) (5,6) (0,2,5,6,7) (0,3,4,5,6) (1,2,3,6,7) (0,1,4,6) {45,27,14,25,40,44,49,22} +[##..###..] (0,2,3,4,5,7) (0,1,2,3,4,7,8) (0,5,6,8) (0,1,3,4,6,7,8) (3,8) (1,2,6,7,8) (0,2,5,6,7,8) (0,1,3,6,7,8) (0,1,2,3,4,5,7) {53,33,50,36,22,46,47,54,61} +[#.##] (1,2,3) (0,2,3) {0,116,116,116} +[###.###...] (1,2,4,6) (1,3,4,5,6,7,8,9) (2,6,7) (1,2,3,4,6,7,8,9) (0,1,2,5,6,8,9) (0,2,3,5,6,7,8,9) (1,5,7,9) (0,1,2,3,4,5,8,9) (1,3,4,8) (0,2,4,7) (1,2,3,4,5,6,7,9) {23,106,61,65,75,70,70,63,67,85} +[.###] (0,1,2,3) (1,2,3) {13,179,179,179} +[.###.#...] (1,2,4,5,6,7,8) (0,1,3,4,6,7) (0,1,3,6,7,8) (0,1,4,6,7,8) (0,1,2,3,5,6,7) (4,5,7) (1,2,4,5,8) (1,2,3,5) (2,3,5,7,8) {53,89,52,64,57,67,63,82,51} +[.#..#....] (0,1,2,5,7,8) (0,1,2,3,5,6) (0,2,3,4,5,8) (0,1,4,5) (0,3,4,6,7,8) (1,2,4,6,8) (0,4,6) (0,3,5,7) (1,3,5,6,7) {30,29,24,30,24,34,28,13,17} +[#..#...#..] (0,3,4,5,6,7) (0,2,4,6,9) (0,2,4,5,6,7,8,9) (2,3,5,6,8) (0,3,5,6,8) (1,6,8) (0,1,2,3,4,5,6) (1,9) (0,1,2,4,5,7) (2,3,5,6) (3,5,7,8) (3,4,9) (2,5,6,7,8) {77,210,70,97,76,107,266,64,237,58} +[#.....##] (0,6,7) (0,2,3,4,5) (1,2,4,6,7) (0,2,5,6) (1,2,3,4,5,6) (0,1,3,5,6,7) (0,3,4,6,7) (1,3,4,5,6,7) {67,44,32,69,57,62,90,67} +[#..#..] (2) (0,2,3,4,5) (0,1,2,5) (1,2,3,5) (0,1,2,3,4) (2,3,4,5) (1,5) (1,2,4) {42,252,277,41,222,48} +[.##..#.] (1,3,4,6) (2,4) (1,3,5,6) (2,4,5) (0,2,3,4,5) (0,2,3,4,5,6) (0,1,2,3,6) (1,4) {29,41,215,37,222,36,33} +[.####.] (2,3) (0,4,5) (0,1,5) (2) (0,2,3,5) (1,4) (1,2,3,4) (0,2,4,5) {144,132,46,10,36,144} +[##.#.] (2) (0,1) (1,2,3) (3,4) (0) (2,3,4) {17,23,147,25,19} +[####.##.] (0,1,2,3,5,6,7) (2,4,6) (0,2,4,5,6) (0,3,4,5,7) (1,3,6,7) (2,3,4,7) (2,3,7) (0,5,7) {208,20,44,195,201,208,46,205} +[##.#] (1) (1,2) (0,2,3) {7,22,27,7} +[###.###...] (0,2,3,4,5,6,7,8) (2,4,5,6,7,8,9) (1,3,5,7,9) (0,1,2,5,8,9) (0,2,3,4,5,6,7,8,9) (0,1,3,5,6,7,8,9) (2) (0,2,4) {177,142,56,153,40,174,158,158,174,154} +[#..#.###] (4,6,7) (0,3,5,6,7) (0,7) (0,2,5) (0,1,2,4,5,6) (3,6,7) (1,4,5,7) {174,19,135,28,28,174,37,75} +[###..###] (2,6) (2,5,6) (2,3,4,5,6,7) (1,6,7) (0,1,2,5,6,7) (1,3,5,6) (0,5,7) (0,2) (1,6) (3,6) {12,36,38,33,2,46,77,13} +[.....#.] (0,2,6) (1,3,4) (0,1,4,5,6) (1,3,6) (1,2,4,5) (0,1,2,3,4) (0,1,2,3,5) {155,175,147,161,155,19,35} +[#.#.] (0,1) (1,3) (0,1,2) (3) {23,41,17,24} +[..#.] (1,2) (0,2,3) (2) {10,0,13,10} +[###.] (2,3) (1,2,3) (0,2) (0,1) (1,2) {20,143,135,20} +[.###.] (1,4) (2,4) (1,2,4) (1,2,3,4) (0,3,4) (0,2,3) (0,3) {30,21,38,47,50} +[..#.##.#] (0,3,4,5,6,7) (0,4) (0,1,2,5,6) (0,2,3,4,5,6) (1,2,3,7) (0,1,6,7) {52,39,41,41,30,37,46,39} +[.#...#] (2,3,5) (3,4) (0,3) (0,4,5) (0,1,4,5) {28,4,18,35,33,40} +[..#####...] (0,1,2,8,9) (0,3,4,6,7,8,9) (0,1,3,4,6,7,8,9) (0,1,2,5,6,7,8) (0,1,2,4,5,6,7,8,9) (0,1,2,3,4,6,7,8) (1,2,3,4,7,8) (0,1,2,3,4,6,7,9) {55,61,41,50,53,16,53,66,60,40} +[#.##] (1,2) (2,3) (0,2,3) {1,13,27,14} +[#....#.##] (4,5,7) (0,1,6,8) (0,1,2,3,4,5,6) (1,2,4,5,6,7,8) (0,5,7,8) (0,2,3,4,5,6,7) (0,1,4,5,6,7,8) (0,3) {49,23,34,27,53,71,38,65,35} +[#..#.#.] (2,3,4,5) (1,2,3,6) (2,6) (0) (0,1,2,3) (1,4) (0,3,5) (4,5) {36,31,29,38,29,34,16} +[.####.] (0,1,5) (1,5) (0,1,2,3) (0,2) (1,3,4) (0,2,4) {28,44,22,24,34,20} +[.#.##.#] (1,3,4,5,6) (1,2) (0,5,6) (0,1,3) (1,2,3,6) (0,2,4,5) (4,6) {31,47,25,34,27,25,35} +[##..#....] (0,1,2,3,6,7,8) (1,2,3) (0,2,3,4,5,6,7,8) (0,2,6,7,8) (0,1,4) (2,3,6) (2,3,4,5,6,7,8) (1,5,6) (0,2,3,7,8) (0,1,4,8) {80,72,68,62,41,18,45,52,71} +[#.##.##] (4,5) (0,2,4,5) (0,2,3,5,6) (0,1,2,4,6) (1,5) (0,3,4,6) (0,1,2,3,5,6) {32,15,22,20,25,32,24} +[.##..###.#] (1,2,5,6,7,9) (0,1,2,4,5,6,7) (0,1,2,3,4,5,7,8,9) (2,5,6,9) (0,5,7,9) (0,2,3,4,5,7,8) (0,1,2,4,5,7) (0,2,3,4,5,6,9) {54,30,65,28,44,75,45,45,13,54} +[#.##.###] (1,2,3,4,5,6,7) (2,4) (0,1,4) (1,7) (3,5) (3) (1) (0,1,2,4,5,7) (0,2,3,5,6,7) {36,58,58,63,63,57,29,51} +[#..#] (0,2) (0,1,2) (1,3) (0,3) {36,18,21,20} +[#.#.###.#] (0,2,3,4,5,8) (1,3,5) (0,2,3,4,7,8) (2,5,6,8) (0,2,3,4,5,6,7) (5,6) (0,1,4,5,6) (2,6,7,8) (2) (3,7) {54,31,65,50,54,54,49,45,39} +[#..##] (0,2,4) (2,4) (0,1,3) (1,3) (0,3) (1,2,3) (1) {12,16,4,22,2} +[.#..#] (0,2) (1,4) (0,1,3) (0,4) {191,21,13,2,195} +[#.#..] (0,1) (0,2) (1,2,3) (1,4) (0,3) (2,3,4) {36,8,23,27,12} +[.###...] (2,4,6) (2,3) (0,1,2,3,5) (0,2,3,4,5) (1,5,6) (1,2,3,5,6) (0,3) {18,38,54,48,16,48,36} +[#..##.#.] (0,3,4,6) (1,5,6) (1,4,7) (0,1,2,3,5,6,7) (1) (0,1,2,3) (0,2,5,7) (0,1,2,3,4,6) (2,3,4,5,6,7) (0,2,3,4,5,7) {74,257,76,75,74,48,51,62} +[...#] (1) (0,3) (0) (0,1,2) (0,2,3) (1,2,3) {52,184,38,27} +[...#....] (3,4,5,7) (0,2,3) (1,4) (0,1,3,4,5,6) (0,2,6,7) (1,4,7) (1,2,4,5,7) (3,7) (0,1,2,3,6) {185,60,195,59,64,44,177,220}