This commit is contained in:
Matthieu Bessat 2021-12-06 22:26:40 +01:00
parent 82f8e11ae4
commit e7bd950ce3

View file

@ -28,45 +28,28 @@ def is_row_valid(row, called):
to_cmp = list(map(lambda x: x in called, row)) to_cmp = list(map(lambda x: x in called, row))
return to_cmp == len(row)*[True] 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(): def get_wins():
wins = [] wins = []
index_to_wins = []
for i in range(len(to_be_called)): for i in range(len(to_be_called)):
calling = to_be_called[0:(i+1)] calling = to_be_called[0:(i+1)]
for board_index,board in enumerate(boards): 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 continue
deb = False for row in board:
if calling == [7, 4, 9, 5, 11, 17, 23, 2, 0, 14, 21, 24, 10, 16, 13]: if is_row_valid(row, calling):
print('DEBUG==') wins.append(board_index, calling, board)
deb = True # generate columns
res = board_do_win(deb, board, calling) columns = []
if deb: for column_index in range(len(board[0])):
print(res, board) current_c = []
if res: for row_index in range(len(board)):
wins.append((board_index, calling.copy(), board)) current_c.append(board[row_index][column_index])
index_to_wins.append(board_index)
return wins, index_to_wins 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): def get_score_from_board(board, calling):
sum_unmarked = 0 sum_unmarked = 0
@ -77,11 +60,11 @@ def get_score_from_board(board, calling):
return sum_unmarked * calling[-1] return sum_unmarked * calling[-1]
score = 0 score = 0
wins, index_to_wins = get_wins() wins = get_wins()
pprint.pprint(wins) pprint.pprint(wins)
print(f'{index_to_wins=}') calling, winner = wins[0]
i, calling, winner = wins[-1] if winner:
score = get_score_from_board(winner, calling) score = get_score_from_board(winner, calling)
pprint.pprint(winner) pprint.pprint(winner)
print(f'{score=}') print(f'{score=}')