diff --git a/day_4/code.py b/day_4/code.py index f5a6969..8d34715 100644 --- a/day_4/code.py +++ b/day_4/code.py @@ -28,45 +28,28 @@ def is_row_valid(row, called): to_cmp = list(map(lambda x: x in called, row)) return to_cmp == len(row)*[True] -def board_do_win(deb, board, calling): - for row in board: - if is_row_valid(row, calling): - return True - - # generate columns - columns = [] - for column_index in range(len(board[0])): - current_c = [] - for row_index in range(len(board)): - current_c.append(board[row_index][column_index]) - columns.append(current_c) - # if deb: - # print(f'{columns=}') - - for column in columns: - if is_row_valid(column, calling): - return True - return False - def get_wins(): wins = [] - index_to_wins = [] for i in range(len(to_be_called)): calling = to_be_called[0:(i+1)] for board_index,board in enumerate(boards): - if board_index in index_to_wins: + if len(list(filter(lambda x: x[0] == board_index, wins))) > 0: continue - deb = False - if calling == [7, 4, 9, 5, 11, 17, 23, 2, 0, 14, 21, 24, 10, 16, 13]: - print('DEBUG==') - deb = True - res = board_do_win(deb, board, calling) - if deb: - print(res, board) - if res: - wins.append((board_index, calling.copy(), board)) - index_to_wins.append(board_index) - return wins, index_to_wins + for row in board: + if is_row_valid(row, calling): + wins.append(board_index, calling, board) + # generate columns + columns = [] + for column_index in range(len(board[0])): + current_c = [] + for row_index in range(len(board)): + current_c.append(board[row_index][column_index]) + + for column in columns: + if is_row_valid(column, calling): + wins.append(board_index, calling, board) + + return False def get_score_from_board(board, calling): sum_unmarked = 0 @@ -77,11 +60,11 @@ def get_score_from_board(board, calling): return sum_unmarked * calling[-1] score = 0 -wins, index_to_wins = get_wins() +wins = get_wins() pprint.pprint(wins) -print(f'{index_to_wins=}') -i, calling, winner = wins[-1] -score = get_score_from_board(winner, calling) +calling, winner = wins[0] +if winner: + score = get_score_from_board(winner, calling) pprint.pprint(winner) print(f'{score=}') \ No newline at end of file