Как мне удалить операторы yield в этом коде и вместо этого использовать его как обычную функцию с операторами возврата?
def solve(game_board):
num_occupied, board_layout=game_board
if num_occupied < 2:
yield (None, game_board)
else:
for move in possible_moves():
new_game_board = do_move(game_board, move)
if new_game_board:
for item in solve(new_game_board):
solved_num_occupied, solved_game_board = item
yield (move, solved_num_occupied), solved_game_board
Решатель предназначен для треугольной игры в пасьянс с колышками с 15 индексами.Структура game_board
- это кортеж, содержащий количество занятых мест на доске и массив из 15 элементов, содержащий 1 или 0, в зависимости от того, есть ли там колышек.
Я старался изо всех сил,сохранение (move, solved_num_occupied), solved_game_board
в массиве и возврат их после одного из циклов for
, но он всегда выходит пустым.Я думаю, что просто не понимаю, как работает генератор и где он заканчивается.Любая помощь будет принята с благодарностью!
Вот полный код, если необходимо (примечание: я изменил имена переменных в функции, прежде чем поместить ее здесь, чтобы сделать ее более понятной): https://pastebin.com/raw/dEyLY2SH