A simple eager/greedy strategy bot
Also kinda serves as a benchmark: ledoian@Promethium /dev/pts/8 560 /home/ledoian/Dev/Carpet (master) $ time python3.10 eager.py Out of 10000 games, 7158 won, 2842 lost. real 0m43.314s user 0m43.255s sys 0m0.049s ledoian@Promethium /dev/pts/8 561 /home/ledoian/Dev/Carpet (master) $ time python3.11 eager.py Out of 10000 games, 7198 won, 2802 lost. real 0m46.816s user 0m46.434s sys 0m0.067s ledoian@Promethium /dev/pts/8 562 /home/ledoian/Dev/Carpet (master) $ time python3.12 eager.py Out of 10000 games, 7226 won, 2774 lost. real 0m42.048s user 0m41.653s sys 0m0.075s ledoian@Promethium /dev/pts/8 563 /home/ledoian/Dev/Carpet (master) $ time pypy3 eager.py Out of 10000 games, 7050 won, 2950 lost. real 0m11.247s user 0m11.085s sys 0m0.158smaster
parent
d42191be75
commit
a83f1cb273
@ -0,0 +1,40 @@
|
||||
import carpet
|
||||
|
||||
ITERATIONS = 10000
|
||||
|
||||
def try_drop(game):
|
||||
success = True
|
||||
while success:
|
||||
success = False
|
||||
for suit in carpet.Suit:
|
||||
value = game.foundations[suit]
|
||||
if (suit, value + 1) in game.carpet:
|
||||
success = True
|
||||
game.autodrop()
|
||||
if len(game.offers) > 0 and (suit, value + 1) == game.offers[-1]:
|
||||
success = True
|
||||
game.drop_card_from_offer()
|
||||
|
||||
stats = {'wins': 0, 'losses': 0}
|
||||
|
||||
for i in range(ITERATIONS):
|
||||
game = carpet.Game()
|
||||
while game.game_result() is None:
|
||||
# Alg: if we can drop, we drop. If not and we can get card, we get. Else we flip.
|
||||
try_drop(game)
|
||||
if game.free_cells > 0 and len(game.offers) > 0:
|
||||
game.get_card_from_deck()
|
||||
elif len(game.deck) > 0:
|
||||
game.flip_deck()
|
||||
elif game.game_result is None: # otherwise this is last round
|
||||
print('Did we lose?')
|
||||
game.print()
|
||||
if game.game_result():
|
||||
#print(f'Game {i} won in {game.moves} moves.')
|
||||
stats['wins'] += 1
|
||||
else:
|
||||
#print(f'Game {i} lost in {game.moves} moves.')
|
||||
stats['losses'] += 1
|
||||
|
||||
print(f'Out of {ITERATIONS} games, {stats["wins"]} won, {stats["losses"]} lost.')
|
||||
|
Loading…
Reference in New Issue