Otrzymasz częściowo wypełnioną siatkę Connect 4 (7x6).
O X
O X
X O X O O
X O X O X X
O X X X O O X
O O O X X O X
(Dane wejściowe można podać w postaci tablicy 1D lub 2D oraz liter lub cyfr itp.)
Zakładać, że
- X rozpoczął grę.
- Nikt jeszcze nie wygrał.
- Do tej pory gracze mogli nie grać dobrze, ale teraz obaj będą stosować optymalne strategie.
- Siatka wejściowa nie jest uszkodzona.
Musisz podać jedną wartość, która wskazuje, który gracz wygrał (lub remis)
Wyzwanie golfa kodu; więc najkrótszy kod wygrywa. Twój program nie musi faktycznie obliczać wyniku w rozsądnym czasie, ale powinieneś być w stanie udowodnić, że wynik zostanie poprawnie uzyskany w skończonym czasie.
code-golf
game
grid
board-game
ghosts_in_the_code
źródło
źródło
Odpowiedzi:
Perl,
119118117 bajtówObejmuje +4 za
-0p
Daj obróconą deskę wyłożoną spacjami na STDIN (grawitacja ciągnie kamienie w prawo)
connect4.pl
:Drukuje,
3
jeśli gracz, który się poruszy, wygrywa,1
jeśli gracz, który poruszy się, przegrywa i2
remis.Na starszych perlach możesz użyć literału,
^S
aby uzyskać jeden bajt. Jeśli nie masz nic przeciwko ekstremalnej nieefektywności, możesz pominąć$$_||=
(tabelę transpozycji) i zyskać 6 dodatkowych bajtów. Jeśli pominiesz$_=
to pokaże ci, gdzie grać zamiast wyniku (graj dalej1
i wygrywaj, jeśli taki istnieje, graj dalej2
i losuj, jeśli taki jest, lub graj na dowolnym3
i przegrywaj)Buduje i ocenia pełne drzewo minimax. Skończy Ci się pamięć i czas, chyba że tablica jest już wystarczająco dobrze wypełniona.
źródło