Added part two for day four, though it's missing quite a bit of error checking.
This commit is contained in:
		
							
								
								
									
										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])
 | 
				
			||||||
		Reference in New Issue
	
	Block a user