Untitled
unknown
python
3 years ago
1.9 kB
7
Indexable
with open('04.in', 'r') as file: data = (line.rstrip() for line in file) data = list(line for line in data if line) numbersraw = data.pop(0) numbers = numbersraw.split(",") boards = [] while True: board = [] for y in range(5): board.append(data.pop(0).split()) boards.append(board) if not data: break bingoboards = [] lastnumber = "" def checkbingo(board, number, bingoboards): global lastnumber for i in range(5): # check rows bingo = True for j in range(5): if board[i][j] != 'x': bingo = False if bingo: bingoboards.append(board) lastnumber = number # calcvalue(board, number) # uncomment for part one solution for i in range(5): # check columns bingo = True for j in range(5): if board[j][i] != 'x': bingo = False if bingo: bingoboards.append(board) lastnumber = number # calcvalue(board, number) # uncomment for part one solution return bingoboards def calcvalue(board, number): print(board, number) total = 0 for row in board: for item in row: if item.isdigit(): total += int(item) total *= int(number) print(total) quit() for number in numbers: print(number) for b, board in enumerate(boards): for y, row in enumerate(board): for x, item in enumerate(row): if item == str(number): boards[b][y][x] = 'x' bingolen = len(bingoboards) bingoboards = checkbingo(board, number, bingoboards) if len(bingoboards) > bingolen: del boards[b] calcvalue(bingoboards[-1], lastnumber)
Editor is loading...