fix: handling bdrs from ones

This commit is contained in:
Maximilian Keßler 2024-01-01 11:38:57 +01:00
parent ea723bdaff
commit 1d07cf67b1
Signed by: max
GPG key ID: BCC5A619923C0BA5

View file

@ -53,9 +53,18 @@ def analyze_replay(instance: hanab_game.HanabiInstance, actions: List[hanab_game
outcomes.add(GameOutcome.bottom_deck) outcomes.add(GameOutcome.bottom_deck)
else: else:
if game.deck[game.progress:].count(card) == 1: if game.deck[game.progress:].count(card) == 1:
bdrs.append((card, game.draw_pile_size)) # Only one copy of this 1 remaining in the draw pile.
if card == game.deck[-1]: # See if it is in somebody's hand
outcomes.add(GameOutcome.bottom_deck) num_copies_in_hands = 0
for hand in game.hands:
num_copies_in_hands += hand.count(card)
# Recall we evaluate the discard *before* the card is removed from the hand,
# so there is at least one present.
assert num_copies_in_hands > 0
if num_copies_in_hands == 1:
bdrs.append((card, game.draw_pile_size))
if card == game.deck[-1]:
outcomes.add(GameOutcome.bottom_deck)
for action in actions: for action in actions:
if action.type == hanab_game.ActionType.Discard: if action.type == hanab_game.ActionType.Discard: