commit e7c4ab6fee080efd9f9329a7c0809b316f9074f4 (patch)
parent 7156bcda556ef263fd5f228fa5e515f28ccb364c
Author: Alex Karle <alex@alexkarle.com>
Date: Sat, 4 Dec 2021 00:41:32 -0500
day4: Cleanup solution with a parse method
My "get on the leaderboard" solution used vim + regexes to turn the raw
input into a python struct of my liking :) Obviously this is not ideal,
so I've touched it up with a parser.
Diffstat:
M | 4/a.py | | | 630 | +++---------------------------------------------------------------------------- |
M | 4/b.py | | | 629 | +++---------------------------------------------------------------------------- |
2 files changed, 45 insertions(+), 1214 deletions(-)
diff --git a/4/a.py b/4/a.py
@@ -2,613 +2,29 @@
import sys
from collections import defaultdict
-# XXX: yikes
-N = [18,99,39,89,0,40,52,72,61,77,69,51,30,83,20,65,93,88,29,22,14,82,53,41,76,79,46,78,56,57,24,36,38,11,50,1,19,26,70,4,54,3,84,33,15,21,9,58,64,85,10,66,17,43,31,27,2,5,95,96,16,97,12,34,74,67,86,23,49,8,59,45,68,91,25,48,13,28,81,94,92,42,7,37,75,32,6,60,63,35,62,98,90,47,87,73,44,71,55,80]
-boards = [ [
-[12 , 79 , 33 , 36 , 97],
-[82 , 38 , 77 , 61 , 84],
-[55 , 74 , 21 , 65 , 39],
-[54 , 56 , 95 , 50 , 2],
-[45 , 68 , 31 , 94 , 14],
-], [
-[95 , 26 , 80 , 25 , 62],
-[79 , 91 , 70 , 76 , 61],
-[98 , 97 , 17 , 75 , 23],
-[71 , 30 , 21 , 52 , 29],
-[20 , 54 , 32 , 12 , 31],
-], [
-[35 , 31 , 86 , 36 , 52],
-[18 , 50 , 79 , 60 , 67],
-[98 , 3 , 51 , 46 , 25],
-[ 4 , 61 , 55 , 87 , 70],
-[94 , 39 , 68 , 27 , 14],
-], [
-[9 , 49 , 53 , 52 , 2],
-[65 , 92 , 4 , 73 , 67],
-[90 , 95 , 39 , 78 , 64],
-[17 , 27 , 13 , 60 , 51],
-[25 , 63 , 70 , 77 , 22],
-], [
-[33 , 34 , 6 , 58 , 77],
-[44 , 75 , 54 , 18 , 21],
-[15 , 25 , 79 , 12 , 70],
-[90 , 14 , 81 , 22 , 49],
-[72 , 38 , 59 , 78 , 16],
-], [
-[13 , 51 , 94 , 40 , 56],
-[6 , 99 , 9 , 64 , 91],
-[87 , 73 , 93 , 71 , 31],
-[39 , 42 , 28 , 24 , 7],
-[1 , 52 , 17 , 85 , 11],
-], [
-[95 , 23 , 15 , 29 , 12],
-[40 , 79 , 2 , 64 , 59],
-[94 , 93 , 3 , 25 , 10],
-[5 , 58 , 7 , 78 , 82],
-[62 , 73 , 74 , 16 , 56],
-], [
-[17 , 55 , 56 , 14 , 51],
-[70 , 94 , 66 , 21 , 37],
-[97 , 90 , 43 , 80 , 89],
-[50 , 12 , 52 , 46 , 85],
-[16 , 79 , 60 , 15 , 45],
-], [
-[18 , 59 , 37 , 25 , 41],
-[51 , 61 , 63 , 7 , 53],
-[3 , 21 , 31 , 76 , 72],
-[29 , 99 , 34 , 6 , 83],
-[55 , 45 , 93 , 75 , 15],
-], [
-[59 , 63 , 4 , 95 , 68],
-[18 , 47 , 43 , 15 , 26],
-[66 , 7 , 54 , 22 , 8],
-[50 , 75 , 91 , 20 , 98],
-[49 , 61 , 55 , 12 , 1],
-], [
-[96 , 74 , 37 , 12 , 66],
-[10 , 94 , 7 , 29 , 75],
-[20 , 48 , 26 , 67 , 41],
-[40 , 99 , 9 , 80 , 35],
-[72 , 87 , 82 , 76 , 85],
-], [
-[60 , 58 , 43 , 17 , 57],
-[25 , 33 , 85 , 91 , 27],
-[46 , 36 , 54 , 49 , 64],
-[86 , 53 , 4 , 63 , 95],
-[38 , 74 , 84 , 37 , 67],
-], [
-[66 , 90 , 73 , 98 , 51],
-[11 , 94 , 60 , 92 , 14],
-[82 , 58 , 17 , 63 , 52],
-[33 , 1 , 18 , 77 , 72],
-[12 , 76 , 20 , 23 , 10],
-], [
-[28 , 69 , 67 , 6 , 32],
-[4 , 17 , 77 , 52 , 33],
-[26 , 57 , 92 , 56 , 73],
-[30 , 91 , 50 , 82 , 2],
-[21 , 31 , 61 , 78 , 99],
-], [
-[98 , 63 , 26 , 81 , 75],
-[23 , 36 , 3 , 88 , 65],
-[69 , 87 , 33 , 20 , 43],
-[4 , 51 , 47 , 70 , 50],
-[10 , 91 , 74 , 77 , 66],
-], [
-[61 , 47 , 90 , 22 , 63],
-[26 , 15 , 41 , 8 , 73],
-[71 , 40 , 82 , 91 , 75],
-[39 , 95 , 56 , 84 , 55],
-[5 , 76 , 32 , 69 , 34],
-], [
-[78 , 77 , 1 , 57 , 39],
-[70 , 49 , 83 , 90 , 87],
-[97 , 74 , 26 , 67 , 19],
-[50 , 21 , 2 , 92 , 60],
-[82 , 65 , 62 , 31 , 33],
-], [
-[6 , 46 , 97 , 50 , 2],
-[48 , 23 , 34 , 24 , 93],
-[83 , 7 , 31 , 59 , 66],
-[44 , 18 , 21 , 47 , 77],
-[69 , 86 , 35 , 72 , 17],
-], [
-[78 , 68 , 69 , 4 , 26],
-[47 , 38 , 15 , 95 , 53],
-[66 , 46 , 49 , 79 , 59],
-[82 , 30 , 50 , 7 , 2],
-[17 , 16 , 34 , 64 , 51],
-], [
-[19 , 20 , 13 , 75 , 26],
-[63 , 28 , 14 , 93 , 50],
-[27 , 70 , 61 , 29 , 67],
-[12 , 89 , 71 , 33 , 98],
-[31 , 25 , 16 , 79 , 69],
-], [
-[95 , 23 , 83 , 86 , 16],
-[4 , 50 , 27 , 92 , 62],
-[42 , 29 , 75 , 88 , 49],
-[31 , 58 , 39 , 44 , 93],
-[80 , 19 , 15 , 97 , 96],
-], [
-[91 , 60 , 6 , 47 , 63],
-[51 , 90 , 36 , 11 , 72],
-[73 , 84 , 50 , 76 , 40],
-[49 , 75 , 82 , 9 , 35],
-[71 , 1 , 0 , 67 , 59],
-], [
-[48 , 56 , 80 , 24 , 86],
-[4 , 74 , 95 , 53 , 41],
-[52 , 58 , 36 , 19 , 64],
-[90 , 87 , 99 , 82 , 25],
-[35 , 13 , 22 , 26 , 21],
-], [
-[68 , 87 , 18 , 23 , 97],
-[69 , 25 , 40 , 76 , 24],
-[34 , 33 , 56 , 16 , 51],
-[49 , 77 , 88 , 75 , 26],
-[2 , 19 , 96 , 35 , 86],
-], [
-[29 , 26 , 56 , 49 , 10],
-[89 , 91 , 95 , 5 , 69],
-[52 , 1 , 99 , 34 , 20],
-[8 , 74 , 64 , 32 , 61],
-[25 , 72 , 60 , 22 , 97],
-], [
-[39 , 65 , 0 , 91 , 86],
-[9 , 7 , 21 , 62 , 89],
-[22 , 92 , 63 , 46 , 17],
-[61 , 66 , 37 , 59 , 52],
-[93 , 70 , 3 , 97 , 49],
-], [
-[29 , 3 , 66 , 4 , 43],
-[46 , 25 , 7 , 62 , 54],
-[71 , 26 , 70 , 75 , 5],
-[17 , 82 , 33 , 51 , 19],
-[65 , 40 , 91 , 53 , 15],
-], [
-[88 , 59 , 14 , 41 , 92],
-[83 , 74 , 73 , 65 , 12],
-[95 , 97 , 35 , 47 , 55],
-[62 , 2 , 3 , 9 , 63],
-[52 , 44 , 32 , 33 , 72],
-], [
-[82 , 12 , 77 , 25 , 60],
-[8 , 93 , 38 , 56 , 97],
-[59 , 5 , 70 , 33 , 40],
-[9 , 90 , 1 , 41 , 57],
-[68 , 73 , 26 , 91 , 6],
-], [
-[72 , 15 , 64 , 59 , 49],
-[26 , 12 , 9 , 97 , 80],
-[84 , 18 , 91 , 20 , 87],
-[69 , 34 , 14 , 65 , 40],
-[98 , 74 , 27 , 5 , 31],
-], [
-[55 , 99 , 23 , 12 , 76],
-[57 , 92 , 71 , 83 , 53],
-[19 , 24 , 39 , 97 , 73],
-[96 , 91 , 32 , 34 , 28],
-[0 , 72 , 42 , 65 , 1],
-], [
-[84 , 50 , 97 , 46 , 99],
-[90 , 1 , 95 , 64 , 22],
-[45 , 53 , 55 , 25 , 42],
-[30 , 70 , 52 , 88 , 72],
-[29 , 44 , 98 , 51 , 6],
-], [
-[70 , 74 , 85 , 78 , 45],
-[34 , 91 , 82 , 63 , 99],
-[17 , 3 , 50 , 53 , 87],
-[38 , 88 , 98 , 6 , 92],
-[39 , 30 , 10 , 18 , 67],
-], [
-[26 , 45 , 13 , 93 , 29],
-[18 , 51 , 66 , 22 , 17],
-[55 , 75 , 70 , 9 , 6],
-[3 , 74 , 30 , 42 , 91],
-[21 , 77 , 57 , 37 , 90],
-], [
-[17 , 94 , 74 , 85 , 60],
-[2 , 67 , 97 , 19 , 11],
-[20 , 32 , 58 , 18 , 56],
-[10 , 95 , 40 , 51 , 93],
-[66 , 50 , 15 , 65 , 52],
-], [
-[7 , 38 , 79 , 77 , 42],
-[15 , 34 , 13 , 80 , 93],
-[46 , 54 , 74 , 33 , 17],
-[1 , 4 , 83 , 68 , 35],
-[70 , 85 , 66 , 63 , 39],
-], [
-[22 , 68 , 41 , 2 , 58],
-[69 , 76 , 14 , 62 , 33],
-[64 , 39 , 46 , 28 , 59],
-[60 , 21 , 26 , 13 , 74],
-[12 , 54 , 99 , 82 , 0],
-], [
-[9 , 0 , 82 , 4 , 20],
-[88 , 76 , 18 , 55 , 44],
-[10 , 53 , 74 , 93 , 58],
-[49 , 50 , 16 , 42 , 2],
-[19 , 23 , 66 , 54 , 65],
-], [
-[96 , 9 , 42 , 30 , 67],
-[3 , 29 , 94 , 5 , 45],
-[65 , 62 , 25 , 59 , 17],
-[21 , 79 , 73 , 44 , 66],
-[38 , 6 , 86 , 7 , 4],
-], [
-[89 , 77 , 17 , 13 , 79],
-[51 , 10 , 28 , 18 , 36],
-[59 , 69 , 80 , 61 , 25],
-[0 , 21 , 9 , 91 , 30],
-[86 , 96 , 2 , 29 , 39],
-], [
-[53 , 11 , 27 , 20 , 82],
-[15 , 38 , 90 , 34 , 98],
-[69 , 28 , 16 , 14 , 99],
-[67 , 49 , 48 , 42 , 59],
-[51 , 2 , 61 , 23 , 3],
-], [
-[37 , 60 , 14 , 43 , 49],
-[66 , 24 , 54 , 96 , 58],
-[73 , 28 , 48 , 3 , 81],
-[93 , 35 , 97 , 46 , 52],
-[75 , 84 , 79 , 1 , 11],
-], [
-[48 , 75 , 8 , 88 , 85],
-[81 , 94 , 3 , 32 , 28],
-[63 , 49 , 78 , 86 , 90],
-[67 , 84 , 5 , 4 , 52],
-[57 , 89 , 29 , 96 , 71],
-], [
-[3 , 34 , 89 , 15 , 64],
-[47 , 31 , 57 , 72 , 26],
-[48 , 75 , 19 , 2 , 65],
-[42 , 45 , 97 , 54 , 71],
-[55 , 27 , 87 , 77 , 35],
-], [
-[74 , 50 , 53 , 19 , 96],
-[95 , 89 , 71 , 75 , 26],
-[8 , 11 , 20 , 43 , 38],
-[78 , 51 , 28 , 65 , 93],
-[64 , 9 , 84 , 31 , 23],
-], [
-[37 , 42 , 65 , 94 , 92],
-[69 , 35 , 40 , 1 , 71],
-[63 , 43 , 75 , 59 , 74],
-[97 , 90 , 67 , 91 , 85],
-[28 , 58 , 21 , 49 , 52],
-], [
-[20 , 62 , 44 , 96 , 74],
-[18 , 37 , 63 , 54 , 51],
-[39 , 90 , 1 , 4 , 84],
-[7 , 72 , 57 , 19 , 79],
-[99 , 66 , 43 , 38 , 36],
-], [
-[2 , 68 , 67 , 21 , 78],
-[81 , 86 , 63 , 13 , 69],
-[74 , 29 , 53 , 56 , 30],
-[16 , 72 , 7 , 54 , 1],
-[64 , 50 , 73 , 14 , 45],
-], [
-[21 , 47 , 88 , 28 , 32],
-[7 , 43 , 83 , 39 , 27],
-[95 , 9 , 98 , 45 , 99],
-[68 , 49 , 94 , 73 , 35],
-[10 , 36 , 13 , 25 , 37],
-], [
-[45 , 2 , 16 , 75 , 9],
-[66 , 46 , 20 , 91 , 87],
-[36 , 74 , 64 , 85 , 62],
-[51 , 39 , 93 , 3 , 57],
-[0 , 37 , 56 , 27 , 50],
-], [
-[9 , 21 , 37 , 96 , 89],
-[66 , 4 , 16 , 3 , 56],
-[58 , 32 , 97 , 76 , 47],
-[7 , 59 , 13 , 0 , 34],
-[69 , 68 , 95 , 61 , 51],
-], [
-[30 , 41 , 60 , 88 , 98],
-[33 , 94 , 57 , 79 , 40],
-[14 , 36 , 17 , 56 , 99],
-[10 , 37 , 62 , 54 , 0],
-[65 , 32 , 58 , 21 , 23],
-], [
-[89 , 47 , 65 , 40 , 18],
-[25 , 17 , 13 , 0 , 33],
-[49 , 57 , 26 , 3 , 76],
-[15 , 71 , 70 , 95 , 61],
-[67 , 94 , 80 , 77 , 7],
-], [
-[92 , 40 , 55 , 95 , 8],
-[88 , 62 , 4 , 43 , 13],
-[54 , 1 , 19 , 20 , 87],
-[11 , 97 , 23 , 27 , 80],
-[63 , 10 , 66 , 45 , 7],
-], [
-[46 , 76 , 10 , 61 , 26],
-[86 , 55 , 15 , 84 , 25],
-[12 , 80 , 82 , 83 , 54],
-[22 , 81 , 69 , 70 , 48],
-[53 , 89 , 30 , 44 , 20],
-], [
-[84 , 62 , 57 , 74 , 30],
-[96 , 18 , 24 , 9 , 29],
-[22 , 8 , 56 , 44 , 4],
-[71 , 85 , 16 , 55 , 73],
-[25 , 28 , 88 , 61 , 33],
-], [
-[60 , 26 , 72 , 28 , 89],
-[51 , 94 , 24 , 96 , 53],
-[39 , 0 , 90 , 12 , 22],
-[92 , 95 , 65 , 34 , 32],
-[63 , 36 , 48 , 58 , 52],
-], [
-[92 , 5 , 32 , 52 , 30],
-[6 , 93 , 73 , 74 , 10],
-[38 , 62 , 55 , 28 , 79],
-[88 , 60 , 27 , 7 , 83],
-[82 , 53 , 39 , 70 , 95],
-], [
-[84 , 35 , 58 , 4 , 19],
-[80 , 96 , 53 , 45 , 7],
-[31 , 52 , 14 , 8 , 63],
-[87 , 41 , 75 , 65 , 18],
-[3 , 72 , 79 , 91 , 86],
-], [
-[16 , 19 , 42 , 49 , 0],
-[34 , 18 , 26 , 70 , 98],
-[45 , 38 , 87 , 17 , 54],
-[84 , 51 , 7 , 24 , 66],
-[57 , 46 , 3 , 36 , 43],
-], [
-[36 , 13 , 44 , 81 , 48],
-[93 , 88 , 41 , 77 , 57],
-[6 , 64 , 2 , 3 , 46],
-[30 , 10 , 8 , 20 , 14],
-[26 , 76 , 7 , 1 , 90],
-], [
-[67 , 74 , 39 , 25 , 78],
-[4 , 96 , 62 , 70 , 30],
-[22 , 41 , 72 , 47 , 32],
-[87 , 27 , 77 , 51 , 86],
-[65 , 35 , 26 , 11 , 85],
-], [
-[94 , 42 , 49 , 91 , 12],
-[78 , 51 , 3 , 95 , 76],
-[0 , 72 , 13 , 30 , 25],
-[33 , 81 , 32 , 58 , 62],
-[67 , 5 , 88 , 26 , 1],
-], [
-[71 , 21 , 29 , 73 , 75],
-[39 , 77 , 63 , 66 , 36],
-[74 , 18 , 80 , 35 , 34],
-[26 , 5 , 53 , 33 , 6],
-[19 , 1 , 27 , 25 , 9],
-], [
-[72 , 53 , 57 , 24 , 30],
-[66 , 84 , 68 , 40 , 12],
-[52 , 48 , 34 , 21 , 26],
-[73 , 3 , 18 , 81 , 67],
-[82 , 7 , 17 , 36 , 56],
-], [
-[93 , 85 , 42 , 81 , 30],
-[47 , 4 , 48 , 82 , 96],
-[28 , 41 , 52 , 0 , 36],
-[97 , 14 , 35 , 9 , 33],
-[98 , 11 , 69 , 20 , 87],
-], [
-[46 , 67 , 85 , 96 , 34],
-[90 , 92 , 68 , 56 , 51],
-[16 , 61 , 29 , 28 , 27],
-[81 , 57 , 64 , 53 , 26],
-[6 , 49 , 43 , 41 , 65],
-], [
-[37 , 82 , 55 , 88 , 27],
-[43 , 79 , 25 , 5 , 50],
-[92 , 83 , 81 , 44 , 22],
-[75 , 74 , 39 , 16 , 41],
-[48 , 29 , 80 , 77 , 90],
-], [
-[57 , 25 , 10 , 61 , 40],
-[1 , 22 , 20 , 81 , 41],
-[32 , 83 , 43 , 54 , 97],
-[29 , 47 , 15 , 27 , 8],
-[79 , 28 , 63 , 77 , 99],
-], [
-[62 , 43 , 94 , 24 , 48],
-[45 , 93 , 14 , 34 , 11],
-[58 , 31 , 33 , 71 , 97],
-[10 , 59 , 76 , 30 , 26],
-[64 , 54 , 79 , 80 , 56],
-], [
-[34 , 8 , 49 , 13 , 12],
-[54 , 57 , 4 , 82 , 46],
-[84 , 32 , 59 , 55 , 40],
-[0 , 73 , 99 , 38 , 56],
-[16 , 61 , 36 , 17 , 78],
-], [
-[7 , 97 , 37 , 81 , 91],
-[3 , 10 , 83 , 48 , 90],
-[49 , 40 , 72 , 6 , 2],
-[17 , 39 , 94 , 82 , 66],
-[58 , 68 , 52 , 64 , 42],
-], [
-[30 , 93 , 40 , 75 , 74],
-[62 , 48 , 47 , 3 , 59],
-[57 , 10 , 73 , 79 , 86],
-[71 , 89 , 88 , 5 , 38],
-[13 , 6 , 56 , 80 , 81],
-], [
-[58 , 54 , 52 , 83 , 88],
-[12 , 84 , 87 , 28 , 46],
-[42 , 6 , 27 , 39 , 4],
-[47 , 72 , 93 , 64 , 66],
-[79 , 71 , 44 , 18 , 3],
-], [
-[60 , 72 , 89 , 35 , 17],
-[77 , 66 , 68 , 59 , 9],
-[2 , 43 , 18 , 14 , 33],
-[20 , 30 , 82 , 31 , 52],
-[81 , 64 , 56 , 45 , 27],
-], [
-[64 , 9 , 44 , 23 , 99],
-[40 , 75 , 55 , 29 , 86],
-[94 , 46 , 45 , 84 , 97],
-[92 , 25 , 30 , 13 , 10],
-[90 , 87 , 61 , 53 , 70],
-], [
-[6 , 49 , 41 , 40 , 37],
-[65 , 24 , 47 , 33 , 55],
-[51 , 4 , 72 , 16 , 85],
-[56 , 5 , 25 , 98 , 14],
-[32 , 26 , 50 , 17 , 34],
-], [
-[24 , 78 , 72 , 40 , 31],
-[3 , 12 , 33 , 87 , 71],
-[99 , 91 , 8 , 59 , 34],
-[50 , 90 , 63 , 45 , 29],
-[75 , 96 , 7 , 22 , 44],
-], [
-[81 , 94 , 61 , 41 , 10],
-[23 , 5 , 66 , 27 , 70],
-[62 , 82 , 4 , 74 , 52],
-[19 , 55 , 67 , 59 , 49],
-[48 , 77 , 35 , 33 , 45],
-], [
-[7 , 86 , 81 , 93 , 19],
-[90 , 57 , 64 , 45 , 36],
-[75 , 13 , 2 , 28 , 39],
-[46 , 10 , 83 , 80 , 47],
-[1 , 91 , 94 , 24 , 56],
-], [
-[20 , 18 , 0 , 49 , 44],
-[77 , 72 , 31 , 61 , 46],
-[66 , 95 , 73 , 8 , 76],
-[3 , 13 , 99 , 94 , 96],
-[59 , 97 , 43 , 85 , 86],
-], [
-[34 , 78 , 54 , 37 , 0],
-[12 , 85 , 86 , 93 , 70],
-[53 , 10 , 59 , 8 , 55],
-[63 , 20 , 29 , 36 , 32],
-[76 , 75 , 43 , 96 , 61],
-], [
-[62 , 55 , 26 , 17 , 74],
-[10 , 15 , 47 , 38 , 20],
-[41 , 66 , 59 , 58 , 9],
-[34 , 52 , 40 , 93 , 82],
-[45 , 43 , 21 , 11 , 24],
-], [
-[85 , 90 , 47 , 75 , 50],
-[51 , 12 , 8 , 54 , 11],
-[73 , 19 , 3 , 37 , 28],
-[25 , 24 , 84 , 67 , 87],
-[44 , 94 , 6 , 20 , 45],
-], [
-[36 , 99 , 81 , 96 , 75],
-[89 , 90 , 29 , 33 , 55],
-[40 , 25 , 10 , 32 , 92],
-[51 , 27 , 70 , 0 , 15],
-[76 , 50 , 44 , 22 , 24],
-], [
-[31 , 63 , 21 , 13 , 24],
-[42 , 87 , 53 , 5 , 38],
-[8 , 50 , 30 , 73 , 83],
-[95 , 91 , 15 , 41 , 52],
-[23 , 99 , 10 , 67 , 60],
-], [
-[88 , 49 , 2 , 4 , 85],
-[22 , 25 , 6 , 30 , 62],
-[34 , 53 , 74 , 96 , 64],
-[77 , 80 , 93 , 65 , 63],
-[37 , 27 , 26 , 68 , 56],
-], [
-[86 , 90 , 40 , 79 , 7],
-[57 , 2 , 34 , 91 , 35],
-[85 , 74 , 52 , 97 , 93],
-[63 , 32 , 38 , 1 , 12],
-[29 , 46 , 56 , 84 , 25],
-], [
-[38 , 26 , 22 , 49 , 24],
-[56 , 84 , 2 , 18 , 62],
-[3 , 90 , 17 , 73 , 37],
-[55 , 95 , 92 , 35 , 29],
-[7 , 51 , 42 , 5 , 39],
-], [
-[14 , 0 , 19 , 53 , 69],
-[2 , 22 , 65 , 78 , 31],
-[43 , 88 , 37 , 93 , 46],
-[12 , 30 , 83 , 26 , 29],
-[92 , 68 , 62 , 7 , 44],
-], [
-[38 , 65 , 61 , 93 , 36],
-[53 , 43 , 11 , 12 , 54],
-[97 , 99 , 48 , 24 , 21],
-[84 , 33 , 3 , 23 , 31],
-[56 , 4 , 87 , 90 , 7],
-], [
-[0 , 61 , 67 , 13 , 56],
-[24 , 69 , 94 , 85 , 73],
-[78 , 35 , 89 , 55 , 72],
-[21 , 4 , 90 , 80 , 83],
-[64 , 99 , 5 , 16 , 36],
-], [
-[55 , 72 , 7 , 83 , 35],
-[63 , 73 , 96 , 21 , 75],
-[8 , 79 , 59 , 62 , 37],
-[15 , 89 , 28 , 80 , 82],
-[34 , 61 , 97 , 23 , 0],
-], [
-[48 , 21 , 43 , 36 , 15],
-[97 , 65 , 91 , 6 , 83],
-[84 , 64 , 98 , 31 , 90],
-[72 , 58 , 5 , 70 , 92],
-[52 , 71 , 25 , 41 , 51],
-], [
-[14 , 32 , 70 , 8 , 73],
-[71 , 75 , 95 , 29 , 68],
-[22 , 27 , 65 , 7 , 78],
-[21 , 37 , 47 , 19 , 6],
-[60 , 83 , 2 , 80 , 98],
-], [
-[59 , 90 , 57 , 29 , 68],
-[54 , 31 , 13 , 61 , 28],
-[65 , 37 , 17 , 53 , 1],
-[25 , 38 , 20 , 46 , 69],
-[23 , 18 , 77 , 98 , 96],
-], [
-[20 , 38 , 79 , 65 , 16],
-[93 , 77 , 14 , 97 , 47],
-[34 , 42 , 8 , 18 , 54],
-[91 , 64 , 0 , 58 , 75],
-[25 , 67 , 37 , 6 , 56],
-], [
-[88 , 81 , 6 , 8 , 65],
-[30 , 51 , 95 , 12 , 97],
-[70 , 16 , 55 , 54 , 73],
-[75 , 64 , 93 , 1 , 52],
-[82 , 77 , 24 , 50 , 36],
-], [
-[41 , 59 , 17 , 76 , 95],
-[51 , 58 , 61 , 73 , 56],
-[1 , 5 , 53 , 20 , 21],
-[22 , 14 , 37 , 28 , 0],
-[43 , 35 , 26 , 96 , 32],
-], [
-[17 , 86 , 68 , 23 , 20],
-[41 , 88 , 75 , 58 , 64],
-[94 , 90 , 3 , 0 , 26],
-[30 , 51 , 13 , 95 , 10],
-[97 , 77 , 83 , 57 , 21],
-]
- ]
+def parse():
+ first = True
+ N = None
+ boards = []
+ board = []
+ for l in sys.stdin:
+ if first:
+ N = [int(x) for x in l.strip().split(',')]
+ first = False
+ else:
+ l = l.strip()
+ if l:
+ row = [int(x) for x in l.split()]
+ board.append(row)
+ elif board:
+ boards.append(board)
+ board = []
-def main():
+ return N, boards
+
+
+def main(boards, N):
# we need an efficient way to find boards with numbers
# roll each n into `(b, r, c)`
index = {}
@@ -639,7 +55,6 @@ def main():
# check win condition
for v in counts[b].values():
if v == 5:
- print(f"board {b} is a winner!")
# find all unmarked in board...
s = 0
for row in boards[b]:
@@ -652,4 +67,5 @@ def main():
if __name__ == '__main__':
- main()
+ N, boards = parse()
+ main(boards, N)
diff --git a/4/b.py b/4/b.py
@@ -2,613 +2,28 @@
import sys
from collections import defaultdict
-# XXX: yikes
-N = [18,99,39,89,0,40,52,72,61,77,69,51,30,83,20,65,93,88,29,22,14,82,53,41,76,79,46,78,56,57,24,36,38,11,50,1,19,26,70,4,54,3,84,33,15,21,9,58,64,85,10,66,17,43,31,27,2,5,95,96,16,97,12,34,74,67,86,23,49,8,59,45,68,91,25,48,13,28,81,94,92,42,7,37,75,32,6,60,63,35,62,98,90,47,87,73,44,71,55,80]
+def parse():
+ first = True
+ N = None
+ boards = []
+ board = []
+ for l in sys.stdin:
+ if first:
+ N = [int(x) for x in l.strip().split(',')]
+ first = False
+ else:
+ l = l.strip()
+ if l:
+ row = [int(x) for x in l.split()]
+ board.append(row)
+ elif board:
+ boards.append(board)
+ board = []
-boards = [ [
-[12 , 79 , 33 , 36 , 97],
-[82 , 38 , 77 , 61 , 84],
-[55 , 74 , 21 , 65 , 39],
-[54 , 56 , 95 , 50 , 2],
-[45 , 68 , 31 , 94 , 14],
-], [
-[95 , 26 , 80 , 25 , 62],
-[79 , 91 , 70 , 76 , 61],
-[98 , 97 , 17 , 75 , 23],
-[71 , 30 , 21 , 52 , 29],
-[20 , 54 , 32 , 12 , 31],
-], [
-[35 , 31 , 86 , 36 , 52],
-[18 , 50 , 79 , 60 , 67],
-[98 , 3 , 51 , 46 , 25],
-[ 4 , 61 , 55 , 87 , 70],
-[94 , 39 , 68 , 27 , 14],
-], [
-[9 , 49 , 53 , 52 , 2],
-[65 , 92 , 4 , 73 , 67],
-[90 , 95 , 39 , 78 , 64],
-[17 , 27 , 13 , 60 , 51],
-[25 , 63 , 70 , 77 , 22],
-], [
-[33 , 34 , 6 , 58 , 77],
-[44 , 75 , 54 , 18 , 21],
-[15 , 25 , 79 , 12 , 70],
-[90 , 14 , 81 , 22 , 49],
-[72 , 38 , 59 , 78 , 16],
-], [
-[13 , 51 , 94 , 40 , 56],
-[6 , 99 , 9 , 64 , 91],
-[87 , 73 , 93 , 71 , 31],
-[39 , 42 , 28 , 24 , 7],
-[1 , 52 , 17 , 85 , 11],
-], [
-[95 , 23 , 15 , 29 , 12],
-[40 , 79 , 2 , 64 , 59],
-[94 , 93 , 3 , 25 , 10],
-[5 , 58 , 7 , 78 , 82],
-[62 , 73 , 74 , 16 , 56],
-], [
-[17 , 55 , 56 , 14 , 51],
-[70 , 94 , 66 , 21 , 37],
-[97 , 90 , 43 , 80 , 89],
-[50 , 12 , 52 , 46 , 85],
-[16 , 79 , 60 , 15 , 45],
-], [
-[18 , 59 , 37 , 25 , 41],
-[51 , 61 , 63 , 7 , 53],
-[3 , 21 , 31 , 76 , 72],
-[29 , 99 , 34 , 6 , 83],
-[55 , 45 , 93 , 75 , 15],
-], [
-[59 , 63 , 4 , 95 , 68],
-[18 , 47 , 43 , 15 , 26],
-[66 , 7 , 54 , 22 , 8],
-[50 , 75 , 91 , 20 , 98],
-[49 , 61 , 55 , 12 , 1],
-], [
-[96 , 74 , 37 , 12 , 66],
-[10 , 94 , 7 , 29 , 75],
-[20 , 48 , 26 , 67 , 41],
-[40 , 99 , 9 , 80 , 35],
-[72 , 87 , 82 , 76 , 85],
-], [
-[60 , 58 , 43 , 17 , 57],
-[25 , 33 , 85 , 91 , 27],
-[46 , 36 , 54 , 49 , 64],
-[86 , 53 , 4 , 63 , 95],
-[38 , 74 , 84 , 37 , 67],
-], [
-[66 , 90 , 73 , 98 , 51],
-[11 , 94 , 60 , 92 , 14],
-[82 , 58 , 17 , 63 , 52],
-[33 , 1 , 18 , 77 , 72],
-[12 , 76 , 20 , 23 , 10],
-], [
-[28 , 69 , 67 , 6 , 32],
-[4 , 17 , 77 , 52 , 33],
-[26 , 57 , 92 , 56 , 73],
-[30 , 91 , 50 , 82 , 2],
-[21 , 31 , 61 , 78 , 99],
-], [
-[98 , 63 , 26 , 81 , 75],
-[23 , 36 , 3 , 88 , 65],
-[69 , 87 , 33 , 20 , 43],
-[4 , 51 , 47 , 70 , 50],
-[10 , 91 , 74 , 77 , 66],
-], [
-[61 , 47 , 90 , 22 , 63],
-[26 , 15 , 41 , 8 , 73],
-[71 , 40 , 82 , 91 , 75],
-[39 , 95 , 56 , 84 , 55],
-[5 , 76 , 32 , 69 , 34],
-], [
-[78 , 77 , 1 , 57 , 39],
-[70 , 49 , 83 , 90 , 87],
-[97 , 74 , 26 , 67 , 19],
-[50 , 21 , 2 , 92 , 60],
-[82 , 65 , 62 , 31 , 33],
-], [
-[6 , 46 , 97 , 50 , 2],
-[48 , 23 , 34 , 24 , 93],
-[83 , 7 , 31 , 59 , 66],
-[44 , 18 , 21 , 47 , 77],
-[69 , 86 , 35 , 72 , 17],
-], [
-[78 , 68 , 69 , 4 , 26],
-[47 , 38 , 15 , 95 , 53],
-[66 , 46 , 49 , 79 , 59],
-[82 , 30 , 50 , 7 , 2],
-[17 , 16 , 34 , 64 , 51],
-], [
-[19 , 20 , 13 , 75 , 26],
-[63 , 28 , 14 , 93 , 50],
-[27 , 70 , 61 , 29 , 67],
-[12 , 89 , 71 , 33 , 98],
-[31 , 25 , 16 , 79 , 69],
-], [
-[95 , 23 , 83 , 86 , 16],
-[4 , 50 , 27 , 92 , 62],
-[42 , 29 , 75 , 88 , 49],
-[31 , 58 , 39 , 44 , 93],
-[80 , 19 , 15 , 97 , 96],
-], [
-[91 , 60 , 6 , 47 , 63],
-[51 , 90 , 36 , 11 , 72],
-[73 , 84 , 50 , 76 , 40],
-[49 , 75 , 82 , 9 , 35],
-[71 , 1 , 0 , 67 , 59],
-], [
-[48 , 56 , 80 , 24 , 86],
-[4 , 74 , 95 , 53 , 41],
-[52 , 58 , 36 , 19 , 64],
-[90 , 87 , 99 , 82 , 25],
-[35 , 13 , 22 , 26 , 21],
-], [
-[68 , 87 , 18 , 23 , 97],
-[69 , 25 , 40 , 76 , 24],
-[34 , 33 , 56 , 16 , 51],
-[49 , 77 , 88 , 75 , 26],
-[2 , 19 , 96 , 35 , 86],
-], [
-[29 , 26 , 56 , 49 , 10],
-[89 , 91 , 95 , 5 , 69],
-[52 , 1 , 99 , 34 , 20],
-[8 , 74 , 64 , 32 , 61],
-[25 , 72 , 60 , 22 , 97],
-], [
-[39 , 65 , 0 , 91 , 86],
-[9 , 7 , 21 , 62 , 89],
-[22 , 92 , 63 , 46 , 17],
-[61 , 66 , 37 , 59 , 52],
-[93 , 70 , 3 , 97 , 49],
-], [
-[29 , 3 , 66 , 4 , 43],
-[46 , 25 , 7 , 62 , 54],
-[71 , 26 , 70 , 75 , 5],
-[17 , 82 , 33 , 51 , 19],
-[65 , 40 , 91 , 53 , 15],
-], [
-[88 , 59 , 14 , 41 , 92],
-[83 , 74 , 73 , 65 , 12],
-[95 , 97 , 35 , 47 , 55],
-[62 , 2 , 3 , 9 , 63],
-[52 , 44 , 32 , 33 , 72],
-], [
-[82 , 12 , 77 , 25 , 60],
-[8 , 93 , 38 , 56 , 97],
-[59 , 5 , 70 , 33 , 40],
-[9 , 90 , 1 , 41 , 57],
-[68 , 73 , 26 , 91 , 6],
-], [
-[72 , 15 , 64 , 59 , 49],
-[26 , 12 , 9 , 97 , 80],
-[84 , 18 , 91 , 20 , 87],
-[69 , 34 , 14 , 65 , 40],
-[98 , 74 , 27 , 5 , 31],
-], [
-[55 , 99 , 23 , 12 , 76],
-[57 , 92 , 71 , 83 , 53],
-[19 , 24 , 39 , 97 , 73],
-[96 , 91 , 32 , 34 , 28],
-[0 , 72 , 42 , 65 , 1],
-], [
-[84 , 50 , 97 , 46 , 99],
-[90 , 1 , 95 , 64 , 22],
-[45 , 53 , 55 , 25 , 42],
-[30 , 70 , 52 , 88 , 72],
-[29 , 44 , 98 , 51 , 6],
-], [
-[70 , 74 , 85 , 78 , 45],
-[34 , 91 , 82 , 63 , 99],
-[17 , 3 , 50 , 53 , 87],
-[38 , 88 , 98 , 6 , 92],
-[39 , 30 , 10 , 18 , 67],
-], [
-[26 , 45 , 13 , 93 , 29],
-[18 , 51 , 66 , 22 , 17],
-[55 , 75 , 70 , 9 , 6],
-[3 , 74 , 30 , 42 , 91],
-[21 , 77 , 57 , 37 , 90],
-], [
-[17 , 94 , 74 , 85 , 60],
-[2 , 67 , 97 , 19 , 11],
-[20 , 32 , 58 , 18 , 56],
-[10 , 95 , 40 , 51 , 93],
-[66 , 50 , 15 , 65 , 52],
-], [
-[7 , 38 , 79 , 77 , 42],
-[15 , 34 , 13 , 80 , 93],
-[46 , 54 , 74 , 33 , 17],
-[1 , 4 , 83 , 68 , 35],
-[70 , 85 , 66 , 63 , 39],
-], [
-[22 , 68 , 41 , 2 , 58],
-[69 , 76 , 14 , 62 , 33],
-[64 , 39 , 46 , 28 , 59],
-[60 , 21 , 26 , 13 , 74],
-[12 , 54 , 99 , 82 , 0],
-], [
-[9 , 0 , 82 , 4 , 20],
-[88 , 76 , 18 , 55 , 44],
-[10 , 53 , 74 , 93 , 58],
-[49 , 50 , 16 , 42 , 2],
-[19 , 23 , 66 , 54 , 65],
-], [
-[96 , 9 , 42 , 30 , 67],
-[3 , 29 , 94 , 5 , 45],
-[65 , 62 , 25 , 59 , 17],
-[21 , 79 , 73 , 44 , 66],
-[38 , 6 , 86 , 7 , 4],
-], [
-[89 , 77 , 17 , 13 , 79],
-[51 , 10 , 28 , 18 , 36],
-[59 , 69 , 80 , 61 , 25],
-[0 , 21 , 9 , 91 , 30],
-[86 , 96 , 2 , 29 , 39],
-], [
-[53 , 11 , 27 , 20 , 82],
-[15 , 38 , 90 , 34 , 98],
-[69 , 28 , 16 , 14 , 99],
-[67 , 49 , 48 , 42 , 59],
-[51 , 2 , 61 , 23 , 3],
-], [
-[37 , 60 , 14 , 43 , 49],
-[66 , 24 , 54 , 96 , 58],
-[73 , 28 , 48 , 3 , 81],
-[93 , 35 , 97 , 46 , 52],
-[75 , 84 , 79 , 1 , 11],
-], [
-[48 , 75 , 8 , 88 , 85],
-[81 , 94 , 3 , 32 , 28],
-[63 , 49 , 78 , 86 , 90],
-[67 , 84 , 5 , 4 , 52],
-[57 , 89 , 29 , 96 , 71],
-], [
-[3 , 34 , 89 , 15 , 64],
-[47 , 31 , 57 , 72 , 26],
-[48 , 75 , 19 , 2 , 65],
-[42 , 45 , 97 , 54 , 71],
-[55 , 27 , 87 , 77 , 35],
-], [
-[74 , 50 , 53 , 19 , 96],
-[95 , 89 , 71 , 75 , 26],
-[8 , 11 , 20 , 43 , 38],
-[78 , 51 , 28 , 65 , 93],
-[64 , 9 , 84 , 31 , 23],
-], [
-[37 , 42 , 65 , 94 , 92],
-[69 , 35 , 40 , 1 , 71],
-[63 , 43 , 75 , 59 , 74],
-[97 , 90 , 67 , 91 , 85],
-[28 , 58 , 21 , 49 , 52],
-], [
-[20 , 62 , 44 , 96 , 74],
-[18 , 37 , 63 , 54 , 51],
-[39 , 90 , 1 , 4 , 84],
-[7 , 72 , 57 , 19 , 79],
-[99 , 66 , 43 , 38 , 36],
-], [
-[2 , 68 , 67 , 21 , 78],
-[81 , 86 , 63 , 13 , 69],
-[74 , 29 , 53 , 56 , 30],
-[16 , 72 , 7 , 54 , 1],
-[64 , 50 , 73 , 14 , 45],
-], [
-[21 , 47 , 88 , 28 , 32],
-[7 , 43 , 83 , 39 , 27],
-[95 , 9 , 98 , 45 , 99],
-[68 , 49 , 94 , 73 , 35],
-[10 , 36 , 13 , 25 , 37],
-], [
-[45 , 2 , 16 , 75 , 9],
-[66 , 46 , 20 , 91 , 87],
-[36 , 74 , 64 , 85 , 62],
-[51 , 39 , 93 , 3 , 57],
-[0 , 37 , 56 , 27 , 50],
-], [
-[9 , 21 , 37 , 96 , 89],
-[66 , 4 , 16 , 3 , 56],
-[58 , 32 , 97 , 76 , 47],
-[7 , 59 , 13 , 0 , 34],
-[69 , 68 , 95 , 61 , 51],
-], [
-[30 , 41 , 60 , 88 , 98],
-[33 , 94 , 57 , 79 , 40],
-[14 , 36 , 17 , 56 , 99],
-[10 , 37 , 62 , 54 , 0],
-[65 , 32 , 58 , 21 , 23],
-], [
-[89 , 47 , 65 , 40 , 18],
-[25 , 17 , 13 , 0 , 33],
-[49 , 57 , 26 , 3 , 76],
-[15 , 71 , 70 , 95 , 61],
-[67 , 94 , 80 , 77 , 7],
-], [
-[92 , 40 , 55 , 95 , 8],
-[88 , 62 , 4 , 43 , 13],
-[54 , 1 , 19 , 20 , 87],
-[11 , 97 , 23 , 27 , 80],
-[63 , 10 , 66 , 45 , 7],
-], [
-[46 , 76 , 10 , 61 , 26],
-[86 , 55 , 15 , 84 , 25],
-[12 , 80 , 82 , 83 , 54],
-[22 , 81 , 69 , 70 , 48],
-[53 , 89 , 30 , 44 , 20],
-], [
-[84 , 62 , 57 , 74 , 30],
-[96 , 18 , 24 , 9 , 29],
-[22 , 8 , 56 , 44 , 4],
-[71 , 85 , 16 , 55 , 73],
-[25 , 28 , 88 , 61 , 33],
-], [
-[60 , 26 , 72 , 28 , 89],
-[51 , 94 , 24 , 96 , 53],
-[39 , 0 , 90 , 12 , 22],
-[92 , 95 , 65 , 34 , 32],
-[63 , 36 , 48 , 58 , 52],
-], [
-[92 , 5 , 32 , 52 , 30],
-[6 , 93 , 73 , 74 , 10],
-[38 , 62 , 55 , 28 , 79],
-[88 , 60 , 27 , 7 , 83],
-[82 , 53 , 39 , 70 , 95],
-], [
-[84 , 35 , 58 , 4 , 19],
-[80 , 96 , 53 , 45 , 7],
-[31 , 52 , 14 , 8 , 63],
-[87 , 41 , 75 , 65 , 18],
-[3 , 72 , 79 , 91 , 86],
-], [
-[16 , 19 , 42 , 49 , 0],
-[34 , 18 , 26 , 70 , 98],
-[45 , 38 , 87 , 17 , 54],
-[84 , 51 , 7 , 24 , 66],
-[57 , 46 , 3 , 36 , 43],
-], [
-[36 , 13 , 44 , 81 , 48],
-[93 , 88 , 41 , 77 , 57],
-[6 , 64 , 2 , 3 , 46],
-[30 , 10 , 8 , 20 , 14],
-[26 , 76 , 7 , 1 , 90],
-], [
-[67 , 74 , 39 , 25 , 78],
-[4 , 96 , 62 , 70 , 30],
-[22 , 41 , 72 , 47 , 32],
-[87 , 27 , 77 , 51 , 86],
-[65 , 35 , 26 , 11 , 85],
-], [
-[94 , 42 , 49 , 91 , 12],
-[78 , 51 , 3 , 95 , 76],
-[0 , 72 , 13 , 30 , 25],
-[33 , 81 , 32 , 58 , 62],
-[67 , 5 , 88 , 26 , 1],
-], [
-[71 , 21 , 29 , 73 , 75],
-[39 , 77 , 63 , 66 , 36],
-[74 , 18 , 80 , 35 , 34],
-[26 , 5 , 53 , 33 , 6],
-[19 , 1 , 27 , 25 , 9],
-], [
-[72 , 53 , 57 , 24 , 30],
-[66 , 84 , 68 , 40 , 12],
-[52 , 48 , 34 , 21 , 26],
-[73 , 3 , 18 , 81 , 67],
-[82 , 7 , 17 , 36 , 56],
-], [
-[93 , 85 , 42 , 81 , 30],
-[47 , 4 , 48 , 82 , 96],
-[28 , 41 , 52 , 0 , 36],
-[97 , 14 , 35 , 9 , 33],
-[98 , 11 , 69 , 20 , 87],
-], [
-[46 , 67 , 85 , 96 , 34],
-[90 , 92 , 68 , 56 , 51],
-[16 , 61 , 29 , 28 , 27],
-[81 , 57 , 64 , 53 , 26],
-[6 , 49 , 43 , 41 , 65],
-], [
-[37 , 82 , 55 , 88 , 27],
-[43 , 79 , 25 , 5 , 50],
-[92 , 83 , 81 , 44 , 22],
-[75 , 74 , 39 , 16 , 41],
-[48 , 29 , 80 , 77 , 90],
-], [
-[57 , 25 , 10 , 61 , 40],
-[1 , 22 , 20 , 81 , 41],
-[32 , 83 , 43 , 54 , 97],
-[29 , 47 , 15 , 27 , 8],
-[79 , 28 , 63 , 77 , 99],
-], [
-[62 , 43 , 94 , 24 , 48],
-[45 , 93 , 14 , 34 , 11],
-[58 , 31 , 33 , 71 , 97],
-[10 , 59 , 76 , 30 , 26],
-[64 , 54 , 79 , 80 , 56],
-], [
-[34 , 8 , 49 , 13 , 12],
-[54 , 57 , 4 , 82 , 46],
-[84 , 32 , 59 , 55 , 40],
-[0 , 73 , 99 , 38 , 56],
-[16 , 61 , 36 , 17 , 78],
-], [
-[7 , 97 , 37 , 81 , 91],
-[3 , 10 , 83 , 48 , 90],
-[49 , 40 , 72 , 6 , 2],
-[17 , 39 , 94 , 82 , 66],
-[58 , 68 , 52 , 64 , 42],
-], [
-[30 , 93 , 40 , 75 , 74],
-[62 , 48 , 47 , 3 , 59],
-[57 , 10 , 73 , 79 , 86],
-[71 , 89 , 88 , 5 , 38],
-[13 , 6 , 56 , 80 , 81],
-], [
-[58 , 54 , 52 , 83 , 88],
-[12 , 84 , 87 , 28 , 46],
-[42 , 6 , 27 , 39 , 4],
-[47 , 72 , 93 , 64 , 66],
-[79 , 71 , 44 , 18 , 3],
-], [
-[60 , 72 , 89 , 35 , 17],
-[77 , 66 , 68 , 59 , 9],
-[2 , 43 , 18 , 14 , 33],
-[20 , 30 , 82 , 31 , 52],
-[81 , 64 , 56 , 45 , 27],
-], [
-[64 , 9 , 44 , 23 , 99],
-[40 , 75 , 55 , 29 , 86],
-[94 , 46 , 45 , 84 , 97],
-[92 , 25 , 30 , 13 , 10],
-[90 , 87 , 61 , 53 , 70],
-], [
-[6 , 49 , 41 , 40 , 37],
-[65 , 24 , 47 , 33 , 55],
-[51 , 4 , 72 , 16 , 85],
-[56 , 5 , 25 , 98 , 14],
-[32 , 26 , 50 , 17 , 34],
-], [
-[24 , 78 , 72 , 40 , 31],
-[3 , 12 , 33 , 87 , 71],
-[99 , 91 , 8 , 59 , 34],
-[50 , 90 , 63 , 45 , 29],
-[75 , 96 , 7 , 22 , 44],
-], [
-[81 , 94 , 61 , 41 , 10],
-[23 , 5 , 66 , 27 , 70],
-[62 , 82 , 4 , 74 , 52],
-[19 , 55 , 67 , 59 , 49],
-[48 , 77 , 35 , 33 , 45],
-], [
-[7 , 86 , 81 , 93 , 19],
-[90 , 57 , 64 , 45 , 36],
-[75 , 13 , 2 , 28 , 39],
-[46 , 10 , 83 , 80 , 47],
-[1 , 91 , 94 , 24 , 56],
-], [
-[20 , 18 , 0 , 49 , 44],
-[77 , 72 , 31 , 61 , 46],
-[66 , 95 , 73 , 8 , 76],
-[3 , 13 , 99 , 94 , 96],
-[59 , 97 , 43 , 85 , 86],
-], [
-[34 , 78 , 54 , 37 , 0],
-[12 , 85 , 86 , 93 , 70],
-[53 , 10 , 59 , 8 , 55],
-[63 , 20 , 29 , 36 , 32],
-[76 , 75 , 43 , 96 , 61],
-], [
-[62 , 55 , 26 , 17 , 74],
-[10 , 15 , 47 , 38 , 20],
-[41 , 66 , 59 , 58 , 9],
-[34 , 52 , 40 , 93 , 82],
-[45 , 43 , 21 , 11 , 24],
-], [
-[85 , 90 , 47 , 75 , 50],
-[51 , 12 , 8 , 54 , 11],
-[73 , 19 , 3 , 37 , 28],
-[25 , 24 , 84 , 67 , 87],
-[44 , 94 , 6 , 20 , 45],
-], [
-[36 , 99 , 81 , 96 , 75],
-[89 , 90 , 29 , 33 , 55],
-[40 , 25 , 10 , 32 , 92],
-[51 , 27 , 70 , 0 , 15],
-[76 , 50 , 44 , 22 , 24],
-], [
-[31 , 63 , 21 , 13 , 24],
-[42 , 87 , 53 , 5 , 38],
-[8 , 50 , 30 , 73 , 83],
-[95 , 91 , 15 , 41 , 52],
-[23 , 99 , 10 , 67 , 60],
-], [
-[88 , 49 , 2 , 4 , 85],
-[22 , 25 , 6 , 30 , 62],
-[34 , 53 , 74 , 96 , 64],
-[77 , 80 , 93 , 65 , 63],
-[37 , 27 , 26 , 68 , 56],
-], [
-[86 , 90 , 40 , 79 , 7],
-[57 , 2 , 34 , 91 , 35],
-[85 , 74 , 52 , 97 , 93],
-[63 , 32 , 38 , 1 , 12],
-[29 , 46 , 56 , 84 , 25],
-], [
-[38 , 26 , 22 , 49 , 24],
-[56 , 84 , 2 , 18 , 62],
-[3 , 90 , 17 , 73 , 37],
-[55 , 95 , 92 , 35 , 29],
-[7 , 51 , 42 , 5 , 39],
-], [
-[14 , 0 , 19 , 53 , 69],
-[2 , 22 , 65 , 78 , 31],
-[43 , 88 , 37 , 93 , 46],
-[12 , 30 , 83 , 26 , 29],
-[92 , 68 , 62 , 7 , 44],
-], [
-[38 , 65 , 61 , 93 , 36],
-[53 , 43 , 11 , 12 , 54],
-[97 , 99 , 48 , 24 , 21],
-[84 , 33 , 3 , 23 , 31],
-[56 , 4 , 87 , 90 , 7],
-], [
-[0 , 61 , 67 , 13 , 56],
-[24 , 69 , 94 , 85 , 73],
-[78 , 35 , 89 , 55 , 72],
-[21 , 4 , 90 , 80 , 83],
-[64 , 99 , 5 , 16 , 36],
-], [
-[55 , 72 , 7 , 83 , 35],
-[63 , 73 , 96 , 21 , 75],
-[8 , 79 , 59 , 62 , 37],
-[15 , 89 , 28 , 80 , 82],
-[34 , 61 , 97 , 23 , 0],
-], [
-[48 , 21 , 43 , 36 , 15],
-[97 , 65 , 91 , 6 , 83],
-[84 , 64 , 98 , 31 , 90],
-[72 , 58 , 5 , 70 , 92],
-[52 , 71 , 25 , 41 , 51],
-], [
-[14 , 32 , 70 , 8 , 73],
-[71 , 75 , 95 , 29 , 68],
-[22 , 27 , 65 , 7 , 78],
-[21 , 37 , 47 , 19 , 6],
-[60 , 83 , 2 , 80 , 98],
-], [
-[59 , 90 , 57 , 29 , 68],
-[54 , 31 , 13 , 61 , 28],
-[65 , 37 , 17 , 53 , 1],
-[25 , 38 , 20 , 46 , 69],
-[23 , 18 , 77 , 98 , 96],
-], [
-[20 , 38 , 79 , 65 , 16],
-[93 , 77 , 14 , 97 , 47],
-[34 , 42 , 8 , 18 , 54],
-[91 , 64 , 0 , 58 , 75],
-[25 , 67 , 37 , 6 , 56],
-], [
-[88 , 81 , 6 , 8 , 65],
-[30 , 51 , 95 , 12 , 97],
-[70 , 16 , 55 , 54 , 73],
-[75 , 64 , 93 , 1 , 52],
-[82 , 77 , 24 , 50 , 36],
-], [
-[41 , 59 , 17 , 76 , 95],
-[51 , 58 , 61 , 73 , 56],
-[1 , 5 , 53 , 20 , 21],
-[22 , 14 , 37 , 28 , 0],
-[43 , 35 , 26 , 96 , 32],
-], [
-[17 , 86 , 68 , 23 , 20],
-[41 , 88 , 75 , 58 , 64],
-[94 , 90 , 3 , 0 , 26],
-[30 , 51 , 13 , 95 , 10],
-[97 , 77 , 83 , 57 , 21],
-]
- ]
+ return N, boards
-def main():
+
+def main(boards, N):
# we need an efficient way to find boards with numbers
# roll each n into `(b, r, c)`
index = {}
@@ -645,7 +60,6 @@ def main():
if v == 5:
winners[b] = 1
if len(winners) == len(boards):
- print(f"board {b} is the last winner!")
# find all unmarked in board...
s = 0
for row in boards[b]:
@@ -658,4 +72,5 @@ def main():
if __name__ == '__main__':
- main()
+ N, boards = parse()
+ main(boards, N)