Added part two for day four, though it's missing quite a bit of error checking.
This commit is contained in:
parent
e4ba946041
commit
584618a349
83
2021/4/main2.py
Normal file
83
2021/4/main2.py
Normal file
@ -0,0 +1,83 @@
|
||||
# all the numbers called, in order
|
||||
numbers = []
|
||||
|
||||
temp_board = []
|
||||
boards = []
|
||||
fills = []
|
||||
|
||||
board_index = 0
|
||||
|
||||
####
|
||||
def Victory(board):
|
||||
for y in range(0, len(board)):
|
||||
if(board[y] == [True, True, True, True, True]):
|
||||
return True;
|
||||
|
||||
# NOTE(dev): Assumes all columns are the same length
|
||||
for x in range(0, len(board[0])):
|
||||
num_true = 0
|
||||
for y in range(0, len(board)):
|
||||
if(board[y][x]):
|
||||
num_true = num_true + 1
|
||||
if(num_true == len(board[0])):
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
####
|
||||
def FindWinner(numbers):
|
||||
indexes = []
|
||||
winning_indexes = []
|
||||
for i in range(0, len(boards)):
|
||||
indexes.append(i)
|
||||
for i in range(0, len(numbers)):
|
||||
for board_index in range(0, len(boards)):
|
||||
if(board_index not in winning_indexes):
|
||||
for y in range(0, len(boards[board_index])):
|
||||
for x in range(0, len(boards[board_index][y])):
|
||||
if(boards[board_index][y][x] == numbers[i]):
|
||||
fills[board_index][y][x] = True
|
||||
if(Victory(fills[board_index])):
|
||||
print('Victory with', numbers[i], 'on board', board_index, '!!')
|
||||
winning_indexes.append(int(board_index))
|
||||
indexes.remove(int(board_index))
|
||||
if(len(indexes) == 0):
|
||||
return numbers[i], board_index
|
||||
|
||||
#### MAIN EXECUTION ####
|
||||
with open('data', 'r') as fp:
|
||||
for i,line in enumerate(fp):
|
||||
|
||||
if(i == 0):
|
||||
numbers = line.strip().split(',')
|
||||
elif(len(line.strip()) == 0):
|
||||
if(len(temp_board) > 0): # i.e. skip the first, empty one
|
||||
# add in the next player board
|
||||
boards.append(temp_board)
|
||||
temp_board = []
|
||||
# create a blank answer board for this player board
|
||||
for j in range(0,5):
|
||||
temp_board.append([False, False, False, False, False])
|
||||
fills.append(temp_board);
|
||||
temp_board = []
|
||||
board_index = board_index + 1
|
||||
else:
|
||||
# add the next array of numbers to the temporary board object
|
||||
temp_board.append(line.strip().split())
|
||||
|
||||
winning_number,winning_board_index = FindWinner(numbers)
|
||||
print('Winning Number:', winning_number, ', Winning Board Index: ', winning_board_index)
|
||||
|
||||
total = 0
|
||||
for y in range(0, len(fills[winning_board_index])):
|
||||
for x in range(0, len(fills[winning_board_index][y])): # assumes size is same for all columns
|
||||
if(not fills[winning_board_index][y][x]):
|
||||
total = total + int(boards[winning_board_index][y][x])
|
||||
|
||||
print(total * int(winning_number))
|
||||
|
||||
# # DEBUG(dev): Show full contents of all boards
|
||||
# for x in range(0, len(boards)):
|
||||
# for y in range(0, len(boards[x])):
|
||||
# for z in range(0, len(boards[x][y])):
|
||||
# print(boards[x][y][z])
|
Loading…
Reference in New Issue
Block a user