Made queen solution pick a random one to load, trace queen also picks random one, but diffrently (just cahnged starting pos)
This commit is contained in:
@@ -178,7 +178,10 @@ def build_queens_trace(board_size):
|
|||||||
})
|
})
|
||||||
return True
|
return True
|
||||||
|
|
||||||
for col in range(board_size):
|
candidate_columns = list(range(board_size))
|
||||||
|
random.shuffle(candidate_columns)
|
||||||
|
|
||||||
|
for col in candidate_columns:
|
||||||
if not is_queen_position_safe(row, col):
|
if not is_queen_position_safe(row, col):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -374,9 +377,14 @@ def check():
|
|||||||
|
|
||||||
@main_bp.route("/solve")
|
@main_bp.route("/solve")
|
||||||
def solve_queens_route():
|
def solve_queens_route():
|
||||||
"""Return all queens solutions for the requested board size."""
|
"""Return one random queens solution for the requested board size."""
|
||||||
board_size = parse_board_size(request.args.get("size"))
|
board_size = parse_board_size(request.args.get("size"))
|
||||||
return jsonify(solve_queens(board_size))
|
queen_solutions = solve_queens(board_size)
|
||||||
|
|
||||||
|
if not queen_solutions:
|
||||||
|
return jsonify([])
|
||||||
|
|
||||||
|
return jsonify(random.choice(queen_solutions))
|
||||||
|
|
||||||
|
|
||||||
@main_bp.route("/solve_trace")
|
@main_bp.route("/solve_trace")
|
||||||
|
|||||||
@@ -75,6 +75,16 @@ def test_check_endpoint_applies_different_rules_for_queens_and_rooks(client):
|
|||||||
assert rooks_response.get_json() == {"valid": True}
|
assert rooks_response.get_json() == {"valid": True}
|
||||||
|
|
||||||
|
|
||||||
|
def test_solve_endpoint_returns_one_valid_4x4_queens_solution(client):
|
||||||
|
response = client.get("/solve?size=4")
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert tuple(response.get_json()) in {
|
||||||
|
(1, 3, 0, 2),
|
||||||
|
(2, 0, 3, 1),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_authenticated_user_can_save_and_load_a_game_state(client, app_instance, user_factory, login_as):
|
def test_authenticated_user_can_save_and_load_a_game_state(client, app_instance, user_factory, login_as):
|
||||||
user_factory(username="alice", password="Password123!")
|
user_factory(username="alice", password="Password123!")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user