import os dir = os.path.dirname(os.path.abspath(__file__)) with open(os.path.join(dir, './input.txt'), 'r') as input_file: lines = input_file.readlines() random_num_list_str = lines[0].strip() random_num_list = random_num_list_str.split(',') grids = [[[]]] grid_sums = [] grid = -1 row = 0 score_id = 5 grid_size = 5 for i in range(len(lines)): if i == 0: continue line = lines[i].strip() if line == "": grid = grid+1 row = 0 grids.append([]) grid_sums.append(0) continue grids[grid].append([]) chars = line.split() for j in range(len(chars)): number = chars[j] grids[grid][row].append(number) grid_sums[grid] = grid_sums[grid] + int(number) row = row + 1 print(f"{i}: {lines[i]}") for i in range(len(random_num_list)): called_number = random_num_list[i] for a in range(len(grids)): grid = grids[a] for b in range(len(grid)): row = grids[a][b] if called_number in row: print("found") grid_sums[a] = grid_sums[a] - int(called_number) if len(row) == 5: row.append(0) row[grid_size] = row[grid_size]+1 if row[grid_size] == score_id: print("winner!") print(grid_sums[a] * int(called_number)) break if len(grid) == grid_size: grid.append([]) if len(grid[grid_size]) <= grid_size: grid[grid_size].extend([0 for x in range(grid_size)]) grid[grid_size][b] = grid[grid_size][b]+1 if grid[grid_size][b] == score_id: print("winner!") print(grid_sums[a] * int(called_number)) break