solve() shuffle parameter

This commit is contained in:
Jörn-Michael Miehe 2023-08-30 01:19:05 +00:00
parent 1b18b19c85
commit 19cdbec4e1
2 changed files with 8 additions and 1 deletions

View file

@ -8,6 +8,7 @@ def main() -> None:
solution = solve(
Board.default_puzzle,
lambda state: state.solution_class == (3, 1, 2),
# shuffle=True,
)
if solution is None:

View file

@ -1,3 +1,4 @@
import random
from typing import Callable
from .board import Board
@ -8,6 +9,7 @@ def solve(
is_solved: Callable[[Board], bool],
*,
history: list[tuple[int, Board]] | None = None,
shuffle: bool = False,
) -> list[tuple[int, Board]] | None:
if history is None:
@ -17,7 +19,11 @@ def solve(
if is_solved(state):
return history
for button in state.buttons:
buttons = state.buttons
if shuffle:
buttons = random.sample(buttons, len(buttons))
for button in buttons:
# try to click all buttons
next = state.click(button)