Maczuga
Ponieważ świetnie się bawiłem, pracując nad oryginalnym wyzwaniem KOTH, chciałem wymyślić inne. Dla mnie frajdą z tych wyzwań AI jest udoskonalenie stosunkowo prostego bota, który subtelnie gra w bardzo prostą grę. Ze względu na probabilistyczny charakter gier karcianych uważam, że blackjack może być interesującą grą KOTH, podobnie jak TPD.
Wszystkie zasady wywodzą się z opisu BlackJacka z butami na tej stronie
Zasady dotyczące kart i talii
- Boty grają przy stołach czterech (4) konkurentów i jednego (1) dealera
- Jeden (1) but (tasowana talia) jest wspólny dla wszystkich graczy i krupiera, dopóki nie zostanie wyczerpany, w którym to momencie zostanie dodana nowa losowo tasowana talia i gra będzie kontynuowana. Boty NIE SĄ (obecnie) POWIADOMIANE o dodaniu tej nowej talii. Takie powiadomienie może zostać dodane, jeśli brak tej funkcji powoduje dostateczne cierpienie / kłopoty.
- Istnieje wpisowe w wysokości 10 na rundę, a karty są bezpłatne
- Idealna / idealna ręka ma wynik 21
- Wszystkie karty twarzy mają wartość 10
- Wszystkie karty numeryczne są warte swojej liczby
- Asy są warte 11 lub 1. Zostanie to rozwiązane automatycznie przez ramę, a nie przez boty.
- Zgodnie z zasadami wszystkie karty graczy są odkryte i są widoczne. Jedna z kart krupiera jest odkryta, a druga odkryta.
Punktacja
- Wyniki powyżej 21, które używają asa jako 11, zmuszają asa do zmniejszenia wartości do 1
- wyniki powyżej 21, których nie można zmusić poniżej progu 21, „pokonują” bota
Sprzedawca
- Krupier losuje, dopóki nie odpadnie lub nie przekroczy wyniku 17, w którym to momencie jest zmuszony wstać
Zakłady i żetony
- Na początku każdej rundy naliczane jest wpisowe 10, więc jest minimalna stawka 10, a minimalna stawka 1. UWAGA - zakład jest wartością bezwzględną argumentu zakładu, więc nie przejmuj się próbować ujemne zakłady.
- Boty, których nie stać na wpisowe, są usuwane z konkursu
- Podczas stawiania zakładów boty nie mogą stawiać więcej niż żetony, które mają
- Jeśli zakład jest możliwy, zakład żetonów jest natychmiast usuwany z bota i dodawany do stawki
- Wygranie zakładu daje botowi 2x zakład żetonów. Ponieważ jednak zakład jest odejmowany od żetonów bota, bot nawet się łamie, a następnie wygrywa 1x zakład.
- Boty wygrywają zakłady tylko wtedy, gdy ich wynik jest wyższy niż u krupiera
Podział rozgrywki
Jedna ręka
- Na początku gry każdy gracz otrzymuje iteracyjnie jedną kartę i odejmuje od swoich żetonów opłatę wpisową w wysokości 10 USD / minimalny zakład.
- Dealer losuje
- Dokonane zostaje drugie podanie, a wszyscy gracze otrzymują kolejną kartę.
- Dealer losuje
- Następnie (w tej samej kolejności, w jakiej zostały zadane) każdy bot jest wykonywany zgodnie z opisem w sekcji „Interfejs programisty” i musi wykonać ruch lub stać. Zakłady są uważane za ruch. UWAGA, ŻE ZAKŁADY NIE WPŁYWAJĄ NA ZDOLNOŚĆ BOTÓW DO WYKONYWANIA INNYCH RUCHÓW. Bardzo możliwe jest obstawianie, a następnie losowanie karty. Możliwe jest dobranie wielu kart i postawienie zakładu przed postawieniem.
- Gdy wszystkie boty się zepsują lub staną, krupier gra do progu 17
- Wyniki botów są następnie porównywane z wynikami krupiera, zakłady są wygrane i przegrane
Jedna runda
Uważa się, że stanowi pięć (5) rąk. Pomiędzy rozdaniami lista uczestników jest sortowana w celu usunięcia graczy, a następnie przetwarzana dalej, aby zapewnić, że wszystkie boty zagrają taką samą liczbę rozdań (pod warunkiem, że liczba zgłoszeń nie będzie równomiernie rozłożona na stoły z czterema botami) ).
Interfejs programisty i legalne ruchy
Jak udokumentowano w pliku CardShark:
# DOCUMENTATION
# INPUT SPECIFICATION
# $ ./foo.bar <hand-score> <hand> <visible cards> <stake> <chips>
# <hand-score> is the present integer value of the player's hand.
# <hand> is a space-free string of the characters [1-9],A,J,Q,K
# <visible cards> every dealt card on the table. when new shoes are brought
# into play, cards drawn therefrom are simply added to this list
# NOTE: the first TWO (2) cards in this list belong to the dealer.
# one however will be "hidden" by a "#". the other is visible.
# !!! THE LIST IS CLEARED AT THE END OF HANDS, NOT SHOES !!!
# <stake> the number of chips which the bot has bet this hand
# <chips> the number of chips which the bot has
# SAMPLE INPUT
# $ ./foo.bar 21 KJA KQKJA3592A 25 145
#
# OUTPUT SPECIFICATION
# "H"|"S"|"D"|"B" (no quotes in output)
# "H" HIT - deal a card
# "S" STAND - the dealer's turn
# "D" DOUBLEDOWN - double the bet, take one card. FIRST MOVE ONLY
# "B 15" BET - raises the bot's stakes by $15.
Jak (teraz) udokumentowano w pliku Cards:
# class CARD
# card is a container for representing paper playing cards in
# otherwise fairly functional programming.
# letter()
# gets the letter used to identify the card in a string
# LETTER MAPPINGS
# Ace : 'A'
# Two : '2'
# Three : '3'
# Four : '4'
# Five : '5'
# Six : '6'
# Seven : '7'
# Eight : '8'
# Nine : '9'
# Ten : 'T'
# Jack : 'J'
# Queen : 'Q'
# King : 'K'
# "Hidden": '#'
Kod źródłowy systemu oceniania jest TUTAJ
Przykładowe boty
Lim 17
#!/usr/bin/env python
import sys
s = sys.argv
if int(s[1]) < 17:
print "H"
else:
print "S"
Języki wprowadzania
Obecnie obsługiwane są Java, c / c ++, Python i Lisp. Dołożymy starań, aby dołączyć zgłoszenia w innych językach, ale pamiętaj, że ostateczny konkurs zostanie przeprowadzony na Linux-ie.
Wybór zwycięzcy
Zwycięzcą zostałby autor bota, który konsekwentnie gromadził najwięcej żetonów w ciągu jeszcze określonej liczby stołów i rund. Zwycięzca zostanie ogłoszony 3 czerwca, ale ogłoszenie może zostać opóźnione, jeśli nadal będą nadsyłane zgłoszenia. Konkurs przedłużony na czas nieokreślony.
źródło
Odpowiedzi:
BlackJackDavey
Nudne, staromodne ok. Powinien kompilować pod ANSI lub c99.
Strategia tutaj jest udokumentowana w komentarzach, ale jest bardzo prosta. Dodatkowe zakłady są zawierane tylko w dwóch przypadkach (niewystarczająca stawka na następną rundę lub podwojenie stawki) i może to wymagać zmiany.
Ta gra różni się od przewodników oferowanych graczom w kasynie tym, że nie ma konkretnych informacji na temat karty pokazującej krupiera (czy moglibyśmy uznać, że jest to ostatni wpis
visible
?), Więc niektóre z magicznych liczb są przypuszczeniami.Może wymagać skromnego zamieszania w zależności od odpowiedzi na dwa pytania w komentarzach.
Imię z gry, moje imię i stara ballada ludowa .
źródło
Zakład liniowy
Ten bot jest modyfikacją strategii 17. Ten bot losuje, dopóki nie przekroczy wyniku 15 (f), a następnie obstawia żetony int (c * (score / 21)). W ten sposób bot będzie stawiać agresywnie tam, gdzie to możliwe.
źródło