diff --git a/day10/1.py b/day10/1.py new file mode 100644 index 0000000..ddc2e69 --- /dev/null +++ b/day10/1.py @@ -0,0 +1,28 @@ +with open(r'day10/input.txt', 'r') as input: + lines = input.read().split('\n')[:-1] + +def push_button(config,button): + return tuple(not config[i] if i in button else config[i] for i in range(len(config))) + +def find_min_tries(target,buttons,current): + if buttons == []: + return 99999 + new = push_button(current,buttons[0]) + if new == target: + return 1 + return min(find_min_tries(target,buttons[1:],current),find_min_tries(target,buttons[1:],new)+1) + + +target = [] +buttons = [] + +for line in lines: + split_lines = line.split(' ') + target.append(tuple(map(lambda x: True if x == '#' else False,split_lines[0][1:-1]))) + buttons.append(list(map(lambda x: set(map(int,(x[1:-1]).split(','))),split_lines[1:-1]))) + + +sum = 0 +for i in range(len(lines)): + sum += find_min_tries(target[i],buttons[i],tuple(False for _ in target[i])) +print(sum) diff --git a/day10/2.py b/day10/2.py new file mode 100644 index 0000000..af71756 --- /dev/null +++ b/day10/2.py @@ -0,0 +1,77 @@ +with open(r'day10/input.txt', 'r') as input: + lines = list(map(lambda x: list(map(lambda y: int(y),x.split(','))),input.read().split('\n')[:-1])) + +def surface(a,b): + return (abs(a[0]-b[0])+1)*(abs(a[1]-b[1])+1) + +dim = [100000,100000] + +hotspots = set() + +border = set() + +for i in range(len(lines)): + hotspots.add(lines[i][0]) + hotspots.add(lines[i][0]-1) + hotspots.add(lines[i][0]+1) + hotspots.add(lines[i][1]) + hotspots.add(lines[i][1]-1) + hotspots.add(lines[i][1]+1) + j = (i+1)%len(lines) + if lines[i][0] == lines[j][0]: + sign = 1 if lines[i][1] <= lines[j][1] else -1 + for x in range(lines[i][1],lines[j][1],sign): + border.add((lines[i][0],x)) + else: + sign = 1 if lines[i][0] <= lines[j][0] else -1 + for x in range(lines[i][0],lines[j][0],sign): + border.add((x,lines[i][1])) + +print(hotspots) + +def is_point_inside(a): + # up, down, left, right + ranges = [[0,a[1]],[a[1],dim[1]],[a[0],dim[0]],[0,a[0]]] + for j in range(4): + count = 0 + last = False + for i in hotspots: + if i < ranges[j][0] or i > ranges[j][1]: continue + coord = (a[0],i) if j < 2 else (i,a[1]) + if coord in border: last = True + elif last and coord not in border: + last = False + count +=1 + if count%2 == 0: + return False + return True + +def is_rect_inside(a,b): + precision = 1000 + upper_left = (min(a[0],b[0]),min(a[1],b[1])) + lower_right = (max(a[0],b[0]),max(a[1],b[1])) + upper_right = (max(a[0],b[0]),min(a[1],b[1])) + lower_left = (min(a[0],b[0]),max(a[1],b[1])) + upper_border = (range(upper_left[0],upper_right[1],precision),[upper_left[1]]) + lower_border = (range(lower_left[0],lower_right[0],precision),[lower_left[1]]) + right_border = ([lower_right[0]], range(upper_right[1],lower_right[1],precision)) + left_border = ([lower_left[0]],range(upper_left[1],lower_left[0],precision)) + + for border_2 in [upper_border,lower_border,left_border,right_border]: + for i in border_2[0]: + for j in border_2[1]: + if (i,j) not in border and not is_point_inside((i,j)): + return False + return True + +best = surface(lines[0],lines[1]) + +for i in range(len(lines)): + print(i,len(lines)) + for j in range(i): + if surface(lines[i],lines[j]) > best and is_rect_inside(lines[i],lines[j]): + best = max(best,surface(lines[i],lines[j])) + print("new best found") + +print(best) + diff --git a/day10/input.txt b/day10/input.txt new file mode 100644 index 0000000..de153cf --- /dev/null +++ b/day10/input.txt @@ -0,0 +1,153 @@ +[#.......#] (2,4) (1,2,6,8) (2,5,6,7) (0,1,2,4,6,7,8) (3,8) (0,3,4,5,6,8) (1,2,4,6,7) {8,27,38,16,29,6,33,24,29} +[###.] (0,1,2) (0,2,3) (1,3) {27,12,27,21} +[.#.#] (1,3) (0,1,2) {159,164,159,5} +[.###.##] (1,2) (0,1,2,3,5) (2,3,5) (2,4,6) (0,2,6) (0,1,3,4,5) (0,1,2,3,4,5) {174,170,59,170,162,170,26} +[...##..##.] (0,1,2,4,6,9) (0,1,2,3,4,5,6,9) (0,1,2,5,9) (0,1,2,3,7) (0,1,3,6,8) (3,5) (1,3,4,5,6,9) (1,3,4,5,7,8,9) {37,46,35,37,24,37,19,16,9,35} +[#...#.####] (1,3,4,6,8) (0,1,4,5,6,9) (1,5,6) (3,4,5,8) (0,1,2,3,5,6,8,9) (0,2,3,9) (0,1,2,3,5,7,9) (0,2,4,5,7,8,9) (0,1,5,7,8) {58,53,44,44,10,63,26,32,38,44} +[.....##..#] (0,1,3,4,6,7,8,9) (1,4,5,6,8,9) (0,3,9) (0,1,4,7,8,9) (2,4,7) (1,8) (0,2,3,7,8,9) (0,4,5,6,7,8,9) (0,1,2,4,8) {33,42,33,14,58,14,26,32,46,28} +[....#..#.] (0,2,5,8) (1,3,4,5,6,7,8) (1,2,3,7) (0,1,2,3,4,5,6,8) (0,1,2,4,6,7) (0,1,2,3,5,6,7,8) (0) (0,1,3,5,7,8) (0,1,3,4,5,7) (0,1,2,4,5,6,8) (1,5,6,7,8) {80,77,75,39,56,78,65,47,73} +[.#####] (5) (4,5) (2,5) (0,1,5) (0,4) (0,1,4,5) (0,1,2,3,4) {66,50,21,16,70,64} +[....####] (1,4,5) (1,4) (2,5) (0,1,2,3,4,5,6) (0,3,4,5,6,7) (3,4,5) (1,2,3,5,6) {18,43,32,54,60,69,35,15} +[.#.#] (1,3) (2) (0,2,3) {2,194,17,196} +[###..##] (0,1,3,4) (6) (1,3) (0,1,2,3,6) (0,1,2,5,6) (0,1,3,4,6) (0,2,3,4,5) (2,5,6) (5) {55,38,57,47,34,65,52} +[#....#...#] (0,1,3,4,6,7,8) (0,2,3,4,5,6,7) (0,1,2,3,4,5,8,9) (1,2,3,4,6,7,8,9) (0,1,2,3,6,7) (0,2,5,9) (3,7,9) (0,1,2,3,4,5,8) (2) (6,8,9) (0,2,4,5,6) (1,6,8,9) (2,3,4,6,7,8,9) {77,44,104,72,76,57,91,60,51,44} +[#.###.#] (0,2,4) (3,4) (0,1,2,3,5,6) (0,1,2,4,6) (0,5) (2,3,4,6) {44,20,43,26,36,20,25} +[.....##.#] (1,3,6,7,8) (0,2,5,8) (0,4,5,6,7,8) (0,1,2,5,6,8) (2,3,5) (2,3,4,6,7,8) (0,3,5,7) (0,1,2,4,7,8) (0,4,7) (2,8) {85,24,53,22,56,55,27,72,71} +[...#..] (2,3,5) (0,1,4,5) (2,5) (0,1,3) (0,2,3,4,5) {39,21,130,34,28,140} +[##.####.] (1,3,5,6,7) (0,1,2,3,4,5) (1,3,4,6,7) (1,2,3,4,5,6) (0,5,7) (0,3,4,5,6,7) (1,4,7) (0,1,2) (1,4,6) (0,1,2,6,7) {163,195,143,48,49,46,169,184} +[##.#] (0,1,3) (1,2,3) (0) (0,2) {25,22,8,22} +[#.###.#.] (0,1,2,3,4,5,7) (0,4) (0,1,2,7) (5) (0,1,2,3,4,5,6) (0,3,4,5,7) (0,2) (1,3,6,7) (3,4,6) {45,10,26,24,31,18,10,21} +[.#..#] (0,2,4) (4) (3,4) (1,2) (0,3,4) (1,2,4) {33,18,38,17,49} +[....#..###] (1,2,5,8) (5) (2,4,6,7,8) (1,4,5,6,7) (1,8,9) (0,1,2,5,6,7,8,9) (1,3,8,9) (0,1) (2,4,5,6,7,8,9) (0,2,9) (0,2,5,6,8) (2,5,6) (1,2,5) {55,76,87,15,45,85,72,50,72,45} +[##..##...#] (0,1,3,5,6,7,9) (0,1,2,4,7,9) (0,2,4,5,8,9) (0,2,4,6,8,9) (1,6,7,8) (1,2,3,4,5,7,8) (1,4,5,6,7,9) (0,2,3,4,5,6,8,9) (1,2,6) (0,6,8,9) (1,3,7) (4,8,9) {66,35,49,39,58,55,58,32,52,78} +[#...##.] (2,4,5) (0,3,4) (3,5) (1,4,6) (2,6) (1,2,3,4) (0,2,4) (0,1,2,3,5) {23,28,43,28,38,24,25} +[.#.#] (0) (1,2) (0,1) (0,1,3) (0,1,2) {35,53,19,19} +[#..##.] (0,3,4) (1,3,4,5) (2,3,4) (3,5) (2,3) (0,1,2,3,5) (0,2) {20,17,31,48,34,19} +[#..#..##.#] (0,1,2,3,4,5,6,9) (0,2,3,5) (3,4,6) (0,1,2,3,4,5,8,9) (0,3,4,6,7,8,9) (1,2,4,6,7) (5,6,8) (0,6) (0,1,2,3,4,6,9) (1,4,7) (1,2,4,5,6,8,9) (0,1,3,8) {50,71,38,66,82,38,69,36,56,33} +[...#....#.] (1,2,4,8) (0,4,8,9) (0,1,2,3,6,7,8) (0,1,2,4,6,8) (0,1,3,4,9) (2,5) (1,2,5) (0,1,2,6,7,8) (3,5,6,7,8,9) {155,173,181,30,31,27,159,146,173,14} +[###.##] (2,4) (0,1,2,4) (0,1,2,3,4) (0,5) (0,3) (0,1,4,5) {55,38,37,30,51,20} +[..#.] (1,3) (2,3) (0,3) (0,1,2) {25,25,7,39} +[#..#####..] (0,1,2,3,6,8,9) (0,1,2,6) (0,2,3,4,5) (0,2,3,8) (1,3,4,5,7,8,9) (0,4,5,6,7,9) (0,1,2,4,5,7,8,9) (0,2,6,7) (0,3,4,5,6,7,8) (1,2,3,4,5,6,9) {235,63,64,215,210,210,233,198,203,62} +[#.#.] (1,2) (3) (1,3) (2,3) (1) (0,2) {0,31,19,7} +[####.#...] (1,3,5,7,8) (0,1,2,3,4,6,7) (0,1,2,5,6,7,8) (4,5,6,7) (0,1,3,4,5,6,7) (0,2,3,5,7,8) (0,1,2,4,5,7,8) (0,1,3,4,7,8) {68,72,54,53,47,55,46,86,59} +[#....##...] (0,3,4,5,6,8,9) (0,1,2,4,7,8) (0,1,2,3,6,9) (0,2,4,5,7,8,9) (0,1,2,3,4,5,7,9) (0,6,8,9) (2,6,7,8) (0,4,5,6,7,8,9) (2,3,4,5,6,8,9) (9) (1,3,5,6,7,8,9) (0,1,2,3,4,5,6,8,9) (4,8) {101,70,74,72,97,85,95,84,122,108} +[#.#.] (0,2) (1,3) {16,2,16,2} +[.....#.###] (1,3,4,6,7,8,9) (0,1,4,6,7,8,9) (3,4,5,7,8,9) (2,6,7,9) (0,1,3,4,5,6,7,8) (0,2,3,5,7,8) (1,3,5,6,8) (1,2,5) (1,5,6,8,9) (0,6,8) (1,2,4,5,6,7,8,9) (1,3,5,7,8,9) (3,5,9) {40,88,33,82,45,102,74,70,104,86} +[##..#.##.#] (2,3,4,5,6,8,9) (1,2,4,5,6,8,9) (0,1,4,5,7,8,9) (1,7,8,9) (1,3,4) (0,1,4,8,9) (0,2,3,4,5,6,7) (0,2,3,4,5,7,9) (1,2,3,5,6,8,9) (0,2,4,5,8) {54,86,82,66,99,89,51,43,103,104} +[.####.##.] (2,4,8) (2,3,6,7) (0,1,2,4,5,6,8) (6) (0,1,4,5,6) (0,1,2,3,4,6,7,8) (0,1,3,5,6,7,8) (1,4,6) (0,1,2,3,5,6,7) {55,57,164,26,178,37,69,26,156} +[..##...] (0,1,2,3,5) (1,2,6) (0,2,4,5,6) (0,1,2) (2,3) (0,1,3,4) (4,5) {9,12,16,6,6,8,3} +[#.#.] (0,2) (1,2,3) {8,9,17,9} +[.####..#] (0,1,2,3,6) (4) (1,3,5,6) (2,5,6,7) (0,5,6,7) (1,2,3,7) {27,183,174,183,18,44,56,177} +[#..#...] (1) (0,4) (0,3,4,5) (3,6) (1,2,3,4,5) (2,5) (0,1) {193,44,31,194,197,200,6} +[.#.#.#..] (0,4,5,6) (2,6,7) (2,3,4,5,6,7) (1,2,5,6) (1,6) (2,3,5) (1,2,4,5,6,7) (0,1,3,4,5,6,7) {10,47,55,29,46,53,78,57} +[.###...#.] (2,3,5,7,8) (2,3,5,8) (1,3,4,5,6) (1,5) (0,1,2,4,5,7,8) (1,4) (1,2,3,4,5,6,7,8) (7) (0,1,2,3,5,7,8) (7,8) (4,7,8) {28,201,55,48,36,214,6,68,66} +[##...##.#] (0,1,4,5,7) (0,3,5,6) (0,1,2,4,7) (0,2,4,5,6,7,8) (3,5,6) (0,1,2,3,4,6,7,8) (0,5,6,7,8) {45,26,23,34,26,35,36,28,6} +[##.######] (2,3,4,6,7,8) (1,3,4,5,6,7,8) (0) (0,1,3,4,6,7,8) (1,2,6,7) (0,3,5,6,8) (0,1,3,5,6) (2,5,6,7,8) (1,2) {56,59,32,80,49,61,93,62,78} +[...###.] (0,1,2,3,4,5) (0,1,2) (0,1,3,5,6) (0,4,5) (2,3,4,5) {41,34,32,42,33,49,16} +[#...#] (2,4) (0,2) (0,1,3,4) (0,1,2,3) (4) {163,143,55,143,161} +[..#.....##] (0,4,8,9) (0,3,4,5,7,9) (2,3,5,6,8,9) (1,5,8,9) (0,7) (0,4,9) (0,1,2,5,6,7,8,9) (0,1,5,6,7,8) (1,3) {77,32,34,53,46,53,36,48,51,80} +[.##..] (1,2,4) (1,2) (0,3) (0) (4) (1,4) (1,3) {25,23,15,16,20} +[#.#..] (0,1,4) (1) (0,2,4) (0,1,2) (1,2,3,4) (1,4) (0,2) {53,58,53,17,50} +[##..#] (0) (1,4) (1,2) (2,3,4) (0,1,3) (0,1,2) {13,14,104,106,113} +[..#.#] (2,4) (0,1,2,3) (1,2,3) (0) (0,2,4) (4) (0,2) {37,14,34,14,22} +[#..####] (0,2,4,6) (0,1,3,4,5) (0,1,5) (0,1,2,6) (2,4,5) {48,40,44,2,26,36,28} +[###..##.] (1,3,5,7) (0,3,4,5,6,7) (1,3,4,5,6,7) (0,1,4,5,6,7) (2) (0,2,3,4,5) {26,34,4,30,36,45,34,43} +[.#.##.###] (1,2,3,4) (0,1,2,4,5,6,7) (0,1,2,3,5,6,8) (4,5) (0,2,3,4,5,6,7,8) (0,1,2,3,5,6,7,8) (1) (0,1,8) (0,1,4,5,7,8) (0,1,2,3,4,5,6,8) (0,1,2) {56,74,43,28,199,191,14,25,41} +[.##.#..#] (1,2,3,4,5,7) (0,2,6) (0,4,5) (0,1,2) (3,5) (1,2,4,7) {49,26,43,17,18,29,17,6} +[..##.#.] (1,4,6) (1,2,6) (4,5,6) (0,1,5) (3,6) {15,41,13,11,26,28,50} +[.##.##..#] (0,1,3,4,6,7,8) (2,3,6,7) (1,2,3,5,6,7,8) (1,2,3,7,8) (2,3,4,5,6,7,8) (1,6) (0,1,2,6) (1,3,4,5,6,8) (5,6,7) (2,4,5,8) (3,4) {28,70,66,65,60,176,208,173,70} +[..#..#..#.] (3,5,6,9) (0,1,2,4,5,7,8,9) (2,4,7,8,9) (0,2,3,5,7,8) (2,3,4,5,6) (5,6,7,8) (1,3,6,7) (4) {12,21,32,30,47,35,37,58,44,38} +[#....##.##] (1,3,6) (0,1,8,9) (0,2,3,4,5,7,8,9) (1,2,3,4,5,7,8,9) (4) (1,2,3,4,5,6,7,8,9) (0,4,7) (1,4,5) {26,40,19,39,47,21,28,30,26,26} +[...###.#] (0,7) (1,4,5,7) (1,3) (3,6) (0,1,2,4,6,7) (0,5) (3,4,5,6) {24,13,2,32,21,28,23,15} +[####.#] (0,1,2,3,5) (1,2,4,5) (0,1,4) (1,3,4) (0,2,3,4,5) (0,3) (0,1,5) {15,19,9,17,20,13} +[###.] (0,1,2) (0,1,3) {16,16,10,6} +[.##.##.] (0,1,3,4,6) (1,2,6) (3,4) (0,1,3,5,6) (0,2,4,5,6) (1,4) {19,24,2,37,33,11,20} +[..##.] (0,1,2,3) (1,4) (0,1,3) (1,2,4) (1) (0,1,4) {23,74,19,17,38} +[.#.#..] (1,2,4,5) (0,2,3,4) (1,2,3,4) (2,4) (1,3,5) (3,4) {16,33,47,62,63,16} +[...###] (3,4) (1,2) (0,4) (0,2,3) (0,1,4,5) (1,2,4) (1,2,4,5) {22,47,52,15,62,18} +[.#.#..#] (0,1,3,5,6) (0,1,4,6) (0,2,4,5) (1,4,5) (0,2,3,4,5) (1,2,3,5) {62,56,41,41,44,61,38} +[.#...##] (0,1,2,3,4,6) (0,2,3,4,5) (0,1,4,5,6) (0,1,2,3,5,6) (0,2,3,4) (1,2) (0,1,2,5) (0,3,4,6) (1) {261,227,260,79,70,211,44} +[.##..] (3,4) (4) (0,1,2,4) (1,3,4) (1,2) (0,3,4) {20,31,15,32,48} +[..#.##.##.] (0,2,4,5,6,7,8,9) (0,1,2,3,4,5,6,7,9) (1,4,5,6,7,9) (0,3,5,6,7) (0,1,4,5,7,8,9) (0,1,2,3,5,6,7) (2,4,6) (4,7) (0,1,2,3,4,5,7,8) (0,5,7,8,9) (0,1,2,3,4,7,9) (0,1,2,3,5,6,7,8) {100,80,97,70,87,100,95,118,50,75} +[#..##.###] (2,3,7) (0,1,5,6,7,8) (1,3,4,5,7,8) (0,1,2,3,5,6,7,8) (0,1,2,4,7,8) (0,1,3,4,5,8) (1,3,5,6,7,8) (2,3,4,5,6,7,8) {41,68,48,68,23,69,61,94,76} +[###..##.] (0,4,7) (0,2,7) (2,3,4) (1,2,3,5) (1,2,3,4) (1,4,6,7) (3,7) {29,21,37,203,31,16,1,206} +[#....###.] (0,2,8) (2,3) (0,4) (1,2,8) (0,1,3,7) (0,4,5) (1,3,5,6) {156,49,151,36,17,27,17,13,145} +[.#..####] (0,1,2,3,5,6) (2,4) (2,6,7) (1,3,4,5,6,7) (1,3,4,6,7) (0,1,4,6) {33,53,47,35,54,15,69,36} +[#.##..] (2,3,4) (0,1,2) (0,2,3) (4) (1,5) (0,2,3,5) (2,4) (0,3,4,5) {45,32,65,44,41,30} +[#..#.###] (2,4) (0,1,3) (0,1,3,4,6,7) (5,6) (1) (4,6,7) (0,2,3,5) (2,3,4,5) (0,2,5) {28,20,43,14,32,29,16,16} +[....##.#.] (0,2,3,4,7) (0,1,2,4,5,6,8) (2,4,5,6,7) (0,3,4,7,8) (0,6) (1,2,4,5,6) (2,3,4,7) {33,23,45,8,46,38,47,23,19} +[#.##.##] (0,3) (1) (0,2,4,5) (0,1,3,6) (0,1,2,3,5) (0,1,5,6) (0,2,3,4,5) (0,3,4,6) {91,67,38,63,31,58,44} +[###.##] (0,1,3,4,5) (0,2,4,5) (0,1,3) (0,3,4,5) (0,1,2) {150,12,120,30,138,138} +[#.....##] (2,3,4,5,6,7) (1,2) (1,2,3,6) (0,6,7) (1,2,3,4,7) (2,3,4,5,7) (7) (0,2,4,5,7) (3,4,7) (2,3,7) {22,23,64,63,33,26,47,77} +[.#.#] (3) (0,1,2) (0,3) (0,1) (0) (1,3) {40,26,13,24} +[.###] (0,3) (0,2) (0,1) (0,1,3) (2,3) (1,2) {49,50,27,26} +[#.###] (1,2,3,4) (0,2,3,4) (0,3) {14,2,13,16,13} +[.##.] (0,2,3) (1,3) (0,1,3) (1) (0,2) {35,158,30,18} +[#..##] (2,3,4) (0,2) (0,4) (0,2,3,4) (0,1,3) {169,14,161,156,150} +[..###.#.##] (0,1,2,4,5,7,8) (0,5,8,9) (4,5,6,7,8,9) (0,3,4,8,9) (2,4,7,9) (3,4,6,7,8,9) (1,2,3,4,6,7,8,9) (0,1,3,4,5,6,7,8) (0,1,4,5,6,8) (2,9) (2,3,5,6,7,8) {59,58,68,84,101,62,85,85,111,80} +[..#.####.] (0,1,3,4,6,7) (0,6) (0,2,5) (8) (2,7) (0,1,2,3,5,8) (0,1,2,3,5,6,7,8) (1,2,3,4,6,8) (5,7,8) (0,6,7) (0,1,3,4,5,6,7,8) {76,46,52,46,29,224,63,223,234} +[#.#.#.] (1,2,3) (0,1,3,5) (0,4,5) (1,2,5) (1,2,3,4,5) {22,221,214,201,194,221} +[##.###...#] (1,5,6,9) (1,4,5,6,9) (0,2) (2,5,6,7,8,9) (2) (3,5,6,7,8) (1,2,3,4,6) (4,5,6,7) (1,2,3,4,7,8,9) (2,3,8) (0,2,3,4,6,7,8) (1,2,3,9) {12,43,64,59,37,64,73,63,47,50} +[.#.###] (1,3,4,5) (0,2,5) (4,5) (2,4) (0,2,3,4,5) (2,3,5) (1,5) (0,1,2,3,4) {46,58,68,55,76,80} +[..#.###.##] (1,6,7) (0,2,3,7) (0,3,4,5,7) (4,6,7,8,9) (0,1,4,5,6,7,8,9) (2,4,6) (1,3,6,7,9) (1,2,3,4,6,7,8,9) (0,1,2,3,4,5,8) {59,60,53,58,79,39,72,94,67,57} +[#####...] (0,1,6) (2,3,4) (0,1,2,7) (1,3,4,5,6,7) (0,6) (2,3,6) (1,4,5,6) (2,3,5) (0,1,3,4,6) (0,1,4,6) {159,82,48,57,75,41,184,35} +[.#...##] (1,4,5,6) (0,2,4,5) (1,3) (0,2,3,4,6) (0,2) {35,20,35,14,28,27,8} +[.....#] (1,2) (3,4,5) (2,4,5) (2,3) (0,1,3,4,5) (0,4) {9,11,30,31,45,42} +[#.##..#..] (0,2,3,6,7,8) (0,3,6) (2,3,4,5,6) (3,4) (0,1,3) (0,3,4,5,7,8) (0,2,5) (0,1,7,8) {84,21,42,87,40,50,45,31,31} +[#.#.#..#] (3,5,6,7) (0,1,7) (3,4) (0,1,5,7) (1,2,4) (1,2,5,6) (0,1,4,6) {32,41,9,16,32,10,15,21} +[#.#.#.##.] (0,1,5,6,7) (2,3,4,5,7,8) (0,3,5,6,7,8) (0,1,2,3,5,6) (2,3,4,5,6,8) (1,5) (1,2,3,4,5,6) (0,2,3,4) {28,42,49,61,45,80,55,36,38} +[##....##.] (1,3,6) (3) (1,3,5,6,7) (0,4,8) (1,4,5,8) (0,2,4,5,6,8) (0,1,2,6,7,8) (0,2,3,4,7,8) (2,6,7,8) (0,2,3,5,6) {42,45,53,210,25,42,71,43,47} +[.###] (0,1,3) (0,1) (1,2,3) {14,19,5,6} +[##.#####] (1,2,3,4,5,6) (0,1,2,5,6,7) (0,1,3,4,6,7) (0,2,3,5,7) (2,3,5,6,7) (1,2,3,4,7) (1,3,7) (1,2,3,7) {33,69,99,89,29,62,45,95} +[.#.###] (2,3) (1,3,4,5) (0,1,2,4,5) (1,2,3,4,5) {4,19,34,33,19,19} +[#....] (1,2,3) (0,1,2,3) (3) (0,4) {28,30,30,43,17} +[..###] (0,1,2,3) (0,2,4) (0,1,4) {18,9,9,0,18} +[##.###] (0,1,2) (0,2,4) (1,3,5) (3,4) (1,3,4) (2,3) (0,4,5) {27,41,43,55,25,23} +[....###.##] (1,4,9) (0,2,8) (4,5,7) (0,2,4,5,7,9) (0,2,6,7,8) (1,2,3,4,5,6,7,9) (1,2,4,6,7,8,9) (4) {114,34,129,13,48,16,24,27,116,34} +[##.#] (2) (0,1) (0) (2,3) (0,3) {15,3,21,12} +[.###] (0,2) (1,2,3) {19,8,27,8} +[.####.##] (0,1,2,3,4,6,7) (1,5) (0,1,3,5,6,7) (0,1,2,3,4,5) (0,1,2,4,6,7) (0) (0,2,4,6) (1,4,5,6) (0,1,3,4,5,6,7) {63,57,54,36,68,34,60,32} +[##..#] (1,2,3) (0,3) (0,1,4) {18,27,11,13,16} +[####.#..##] (1,3,7) (0,2,4,8,9) (2,3) (1,4) (1,2,4,6,8,9) (1,5,6,8) (1,3,5,6,7) (0,1,8) (0,1,2,4,6) (6,9) {22,54,37,11,33,24,59,5,46,34} +[#.#...#.] (0,1,2,3,4,6,7) (2,4) (0,1,4,5,6,7) (2,7) (0,2,6) (1,6) (0,3,5) (0,1,2,4,5,7) (1,2,4,6) {53,35,55,20,52,38,31,30} +[##.###] (0,2,3,4) (0,1,2,3) (1,4) (0,1,2,4) (0,3,5) {56,35,41,53,35,15} +[#######] (0,2,6) (0,3) (0,5) (0,4) (1,2,4) (1,2,6) (1,2) (1,2,3,4) {44,46,55,29,33,13,19} +[.#.##..] (0,1,2,5) (3,4,5,6) (2,3) (1,4,5,6) (1,2,5,6) (1,2,3) (3,5) (0,2,4,5,6) {22,58,66,46,18,64,35} +[#..#...#.#] (1,5,6,7,8,9) (0,1,5,6,7,8) (0,1,2,3,4,5,6,8) (0,1,3,4,6,7,8,9) (0,1,3,4,5,6,8) (1,4,9) (3,6,7) (0,2,3,4,5,7,8) (0,1,4,6) (3,4,5,6,9) (2,5,8,9) (0,3,6,7) {96,97,36,96,81,95,141,84,99,62} +[..##..] (0,1,2,4,5) (2,3) (0,2,4) (1,2,5) {18,14,44,15,18,14} +[.#.#..] (0,1,2,4,5) (3,4,5) (2,5) (4,5) (0,1,2,3,5) (0,3) {199,197,217,12,206,227} +[..#..#] (1,2,3,5) (1,2,3,4,5) (1,3) (0,1,4) {18,43,20,25,29,20} +[#####] (1,2,4) (0,1,3) (0,1,2,4) (0,1) {33,42,29,11,29} +[####.] (0,3,4) (1,3,4) (0,1,2,3) {19,30,16,33,17} +[##.#.#] (0,2,3,4) (0,1,3,5) (0,1,4,5) (0,1,4) {66,47,19,38,47,33} +[#.#.] (0,1) (0,1,3) (0,2) (1,3) {32,27,7,14} +[.##..#] (0) (1,4) (0,1,4,5) (0,3) (2,3) (0,1,5) (2,4,5) (1,2) {43,43,40,25,41,33} +[#..##.##] (3,4) (0,3,5) (0,1,2) (0,1,3,4,6,7) (5) (2,4,6) (0,3,4,5,6,7) (5,6) (0,2,3,4,6) (1) {63,42,38,57,65,48,70,33} +[.#.##...#] (0,2,3,5,6) (3,4,5,6,8) (0,1,2,3,8) (0,5,7) (1,2,3,4,5,7,8) (0,4) (4,5,6,7,8) (1,3,4,5,6,7,8) (0,1,3,4,5,6,7) (2,5,7) {70,26,38,49,43,56,39,33,25} +[..###..] (4,6) (0,2) (0,1,2,5,6) (3,5,6) (0,3,4,6) (1,2,3,5,6) (0,3,4) {43,29,48,36,27,34,49} +[###.] (0,1) (2,3) (0) (0,1,3) (1,2) {26,18,3,3} +[.##.#] (0,3,4) (1,2) (0,2,3) (1,2,4) (1,4) {18,158,172,18,9} +[#####] (0) (0,3,4) (0,2,3,4) (0,1,3) (0,1) {20,5,9,13,9} +[#.##.#..] (0,3,5) (0,4,6,7) (4,7) (1,2,3,4,6,7) (3) (2,3,4,5,6,7) (0,1,2,4,5) (0,1,2,4,6,7) {59,34,41,45,64,44,41,45} +[..#..#...] (4,8) (2,8) (2,4,5,6,7,8) (1,4,6,7) (0,8) (2,3,4,5,6,7,8) (0,3,5,6,7) (3,7,8) (1,3,4,5,6) (2,3,7) {11,32,27,64,63,45,58,58,48} +[#...#.###.] (0,1,2,4,5,6,8,9) (2,4,8) (4,7) (0,2,3,4,5,7,8,9) (2,3,4,6,7) (0,1,3,4,5,6,7) (5,6) (3,8) (1,4,5,7,8,9) (0,4,7) (0,1,4,5,7,8) {73,48,38,40,111,68,24,95,68,40} +[#..##...] (7) (0,1,3,4,7) (0,1,4,5,6,7) (0,2,3,4,6,7) (0,6) (1,2,4,5,7) (1,2,3,4,5,6) (0,2,3,4,5,7) {39,39,43,30,53,39,34,57} +[###.#] (0,1,4) (1,3) (1,3,4) (1,2,3) {6,36,14,30,6} +[.#.....#..] (0,2,5,6,9) (0,1,3,9) (0,6) (6,8) (2,3,6,7,8,9) (0,3,4,9) (3,4,7,8,9) (0,1,2,5,6,7,9) (5,6) {62,31,43,64,25,25,64,39,44,87} +[.#.#.###.] (0,1,3,4,6,8) (5,8) (0,1,4,5,6,7) (4,6) (1,6) (0,1,2,6) (3,5,6,7,8) (2,3,4,7) (4,7) (1,2,4,5,6,8) {23,40,24,39,79,31,64,44,43} +[######...#] (0,3,4,8,9) (0,2,4,6,9) (0,1,2,3,4,5,8,9) (0,1,2,3,5,6,8,9) (2,6,8,9) (0,4,6,7,9) (0,2,4,5,6,7,8) (1,2,5,6,7) (0,1,2,3,8) (0,1,4,5,9) (0,1,2,3,4,5,6,7) {101,92,115,64,73,85,95,42,70,91} +[..##....] (1,2,3,5) (0,1,3,4,5,6) (3,4,6) (1,3,6,7) (0,2,4,5,6,7) (0,1,3,5,6) (0,1,4,5) (0,3,4,5,6) (0,1,2,4,5,6,7) {237,237,183,73,236,241,248,188} +[.#.#.#....] (0,1,3,4,6) (1,3,7,8) (4,5,6,8) (0,2,3,4,5,7,8,9) (1,6) (0,2,9) (1,2,4,5,6,7,8) (6,7) (0,8) (1,2,3,4,6,8,9) {38,57,52,47,44,26,50,51,59,39} +[....###..] (3,4,5,6,7) (1,2,4,5,6,7,8) (0,2,3,4,5,7,8) (3,4,6) (0,4,5,7,8) (0,2,3,6,7) (0,1,2,5,6,7,8) (0,1,2,4,5,6,7,8) (1,2,3,4,5,6,7,8) {61,54,75,56,93,82,95,100,74} +[.###] (0,1,3) (0,2) (1,2) {33,27,34,13} +[.....#] (2,3,4,5) (0,1,2) (1,2,4) (0,1,4) (0,2,4,5) (3) (5) (0,1,2,3) {44,42,41,26,42,34} +[##.#.] (0,1,2,3) (0,3,4) (1,2) (0,4) (0,1,2,4) (1,3,4) (2,3,4) {39,53,43,42,47} +[..#.#] (1,3,4) (0,1,2) (0,1,4) (1,2,3,4) {19,25,16,6,9} +[#..###.] (1,6) (2,3) (0,1) (0,1,3,4,6) (1,2,4,5,6) (3,4,6) (0,6) (2,3,5) (0,4,5) {43,35,31,31,31,35,50} +[.##.##.##] (0,2,3,4,6,7,8) (1,2,3,5) (0,1,2,3) (0,1,3,4,5) (8) (5,7) (0) (0,1,4,6,7) (2,3,5) {34,17,23,37,16,44,2,14,2} +[..##..#...] (1,3,6,8,9) (1,2,4,5,8,9) (0,1,3,4,5,6,8,9) (4,6,7,8,9) (0,3,4,5,6,7,8) (2,4,5,7,8,9) (0,4,6) (4,6,7) (0,1,4,7) (1,2,3,4,5,6,8,9) (5,7,8) {31,37,21,46,69,41,66,44,58,39} +[#.#.#.....] (3,4,9) (1,2,6) (0,3,6) (6,8,9) (2,5) (0,2,4) (0,1,3,6,7,8,9) (0,4,5) (0,1,2,4,5,6,7,8) (0,2,3,4,5,6,7,9) (0,2,3,5,6,7) (4,8,9) (0,5,9) {63,27,54,28,46,57,54,22,27,38} +[##..] (1,3) (3) (2,3) (0,1) {4,11,14,31} +[.#.#] (0,1,3) (0,2) (1,3) (1,2) (2) (3) {29,22,24,23} +[#.##...] (1,4,5,6) (3,5) (1,2,3,6) (0,1,2,3,6) (2,4,5) (4,5) {18,35,40,224,27,224,35} +[##..#..] (0,2,4,6) (0,1,3) (0,1,2,5,6) (4,5,6) (0) (0,1,2,3,5) (0,4,5,6) (0,1,2,4,5) (1,3,4,5) {50,35,16,31,64,66,48}