Najlepsza odpowiedź
Rzeczywista „strategia” jest w rzeczywistości dość złożona i obejmuje wyczerpujące wyszukiwanie punktów w celu rozstrzygnięcia taktyką, więc nie jest to praktyczne w użyciu ręcznym.
Z drugiej strony, strategiczne spostrzeżenia i niektóre ogólne zasady są łatwe w użyciu dla człowieka i prawdopodobnie sprawią, że będziesz stosunkowo dobry odtwarzacz.
Tło
Zacznijmy od szybkiego przejrzenia connect-4. Gra toczy się na planszy 6 × 7; możemy oznaczyć każdy wiersz liczbą, a każdą kolumnę literą:
Każdy gracz po kolei wybiera kolumnę; ich kamień jest umieszczony w najniższej otwartej komórce kolumny. Możemy napisać grę, używając tylko kolumn; na przykład, jeśli obaj gracze grają w środkowej kolumnie, możemy napisać dd
. Doprowadziłoby to do następującej planszy:
(Zgodnie z konwencją, gracz 1 będzie niebieski, a gracz 2 czerwony).
Grę można wygrać, łącząc cztery elementy swojego koloru poziomo, pionowo lub ukośnie:
Ostatnim przydatnym pojęciem jest zagrożenie , które składa się z trzech elementów z rzędu z otwartym czwartym kwadratem (ale niekoniecznie dostępnym). Tutaj niebieski ma zagrożenie na przekątnej:
Strategia
Gra jest zakończona: pierwszy gracz (niebieski) może zawsze wymusić wygraną. Podstawowe idee stojące za zwycięską strategią są dość proste: kontrolowanie zugzwang i kontrolowanie nieparzystych / parzystych wierszy.
Zugzwang
„Zugzwang” jako termin oznacza przegraną, ponieważ muszą wykonać ruch. Prostą ilustracją byłoby przedstawienie dwóch zagrożeń nałożonych na siebie. Oto przykład niebieskiego wymuszającego wygraną w kolumnie c z czerwonym do ruchu:
Jednak podwójne groźby, takie jak ta są dość łatwe do rozpoznania przed czasem i kontrą. W praktyce znacznie bardziej użyteczna forma Zugzwangu polega na czekaniu, aż cała tablica zostanie wypełniona i pozostanie tylko jeden możliwy ruch. Rozważmy prosty przykład, w którym czerwony wygrywa po lewej stronie, przy czym rzeczywista siła ma miejsce dopiero po kilku ruchach:
Zagrożenia parzyste / dziwne
Ktokolwiek ma zagrożenie, które nieuchronnie zostanie wypełnione, w końcu wygra. Jak widzieliśmy w poprzednim przykładzie, czerwony może wygrać z zagrożeniem w parzysty . Z kolei niebieski potrzebuje nieparzystego zagrożenia wygranej: tutaj asymetria w grze pojawia się.
Dziwne zagrożenie „zakrywa” kolumnę i zasadniczo odwraca, kto może znaleźć wiersz, wypełniając całe boa r & D. W szczególności oznacza to, że ważne zagrożenie nieparzyste jest „silniejsze” niż ważne zagrożenie parzyste: jeśli niebieski ma nieparzyste zagrożenie w jednej kolumnie, a czerwony parzyste zagrożenie w innej, niebieski nadal wygrywa. Oto przykład (niebieski do odtworzenia):
Z tej pozycji możemy wypełniać wielokrotnie, aż dojdziemy do pozycja, na której musi zagrać czerwony c
, ponieważ g
(który ma nieparzystą liczbę elementów) dałoby niebieską wygraną. To pozwala kolumna c
zapełni się do momentu, gdy czerwony będzie zmuszony przegrać:
nieparzyste zagrożenie „działa”, ponieważ ogranicza pojedynczą kolumnę, aby mieć nieparzystą liczbę pozycji – skutecznie eliminując parzystą liczbę kwadratów (42) do liczby nieparzystej, co odwraca dynamikę gry. Oznacza to również, że jeśli zarówno czerwony, jak i niebieski mają niezależne nieparzyste zagrożenia, to znoszą się: mając dwie nieparzyste kolumny przywracają sumę parzystą.
Mówiąc bardziej ogólnie, rozróżnienie nieparzyste / parzyste daje nam pojęcie kontrola : czerwony normalnie kontroluje grę, ale niebieski może przejąć kontrolę, stwarzając dziwne zagrożenie. W praktyce kontrola oznacza możliwość zagrania dowolnych parzystych kwadratów lub, jako opcja, zagranie nieparzystego kwadratu, ale w zamian pozwolić przeciwnikowi zagrać parzyste kwadraty.
Taktyka
Rozróżnienie nieparzyste / parzyste pozwala nam grać „strategicznie” – w każdym razie kilka ruchów do przodu. Aby konsekwentnie wygrywać, musimy połączyć naszą wiedzę o strategii długoterminowej z rozsądnymi taktycznymi ruchami krótkoterminowymi. Musimy pamiętać o takich małych pułapkach:
Reguły
Właściwa strategia wygrywająca w grze sprowadza się do zestawu dziewięciu zasad opartych na opisanych wcześniej zasadach strategicznych i taktyce.Zasady zostały opracowane przez Victora Allisa w 1988 roku – myślę, że był pierwszą osobą, która rozwiązała grę.
Reguły nie mogą „t zawsze znaleźć optymalne rozwiązanie: czasami trzeba przeszukać możliwości, głównie po to, aby poradzić sobie z kwestiami taktycznymi.
Oto, jak sądzę, najważniejsze zasady, wraz z nazwami, które nadała im Allis . Jest jeszcze kilka reguł, ale dotyczą one specjalnych przypadków lub są po prostu połączeniami poprzednich reguł. O wszystkich regułach możesz przeczytać w aktualnej pracy: Podejście Connect Four oparte na wiedzy .
- baseinverse : zawsze możesz zająć jedno z dwóch dostępnych kwadratów, gdy przeciwnik zajmie drugie, więc zawsze możesz zablokować cztery w rzędzie, które potrzebują takich dwóch kwadratów. Na przykład czerwony może zawsze grać jeden z zielonych kwadratów po tym, jak niebieski gra o tam:
- pionowo : zawsze możesz zablokować pionowe cztery w rzędzie, grając jednym z dwóch kwadratów bezpośrednio nad sobą. Czerwony może zawsze blokować pionowe cztery w rzędzie na
d
, grając jeden z podświetlonych kwadratów:
- claimeven : ktokolwiek ma kontrolę nad grą (tj. czerwony, chyba że niebieski ma dziwne zagrożenie ) może zagrać kwadrat w parzystym rzędzie (o ile nie można go natychmiast odtworzyć). Ta reguła odzwierciedla podstawową strategię nieparzystych / parzystych.
- później : jeśli masz kontrolę i masz zagrożenie w parzystym rzędzie, będziesz mógł zagrać w tym rzędzie przez claimeven. Oznacza to, że wszystkie zagrożenia w tej samej kolumnie powyżej tej są blokowane. Na przykład tutaj niebieski nie będzie mógł grać
b3
, ponieważ czerwony ma zagrożenie nab2
:
- lowinverse : jeśli są dwie kolumny z nieparzystą liczbą otwartych kwadraty, wynik jest parzysty. Jeśli są dwa nieparzyste kwadraty es w takich kolumnach, które nie są bezpośrednio odtwarzane, ktokolwiek kontroluje grę, będzie mógł zagrać przynajmniej w jedną z nich. Może to również dotyczyć pól, które są dalekie od gry i nie znajdują się obok siebie. W tych dwóch prostych przykładach kolor czerwony może otrzymać co najmniej jeden z dwóch podświetlonych kwadratów:
Wygrana
Gra została właściwie rozwiązana dzięki kombinacji tych zasad i kilku wyczerpujących poszukiwań – same zasady niestety nie wystarczą.
Wiele zasad zależy od posiadania kontroli nad grą. Ponieważ czerwony ma początkowo kontrolę, niebieski nie może używać wielu zasad, dopóki nie uda mu się ustalić dziwnego zagrożenia. Niebieski może stworzyć dziwne zagrożenie, używając niektórych zasad, które nie polegają na kontroli lub tylko taktycznym myśleniu, takich jak łączenie grup po dwie części, aby zagwarantować dziwne zagrożenie w przyszłości.
Okazuje się, że pierwsza gracz może to zrobić przeciwko optymalnej grze, o ile pierwszy ruch to d1
. Oznacza to, że pierwszy gracz zawsze może wygrać. Poszukiwania, które faktycznie to potwierdziły, są również szczegółowo opisane w tezie.
Dla ludzkich graczy ten rodzaj logiki jest trudny do wykorzystania. Na szczęście ktoś inny znalazł zestaw dobrych otwarć, z których ogólnie możesz korzystać: Gra eksperta w Connect-Four .
Poza tym wszystkie ilustracje wykonałem przy użyciu wspaniałego pakietu diagramów Haskella. W rzeczywistości, cała ta odpowiedź była właściwie ćwiczeniem, aby nauczyć się korzystać z biblioteki, co miałem zamiar zrobić od jakiegoś czasu! Możesz rzucić okiem na kod w tym streszczeniu. Kod jest nieuporządkowany, ale to świetna demonstracja, że wbrew powszechnemu przekonaniu Haskell jest naprawdę świetny do interaktywnego prototypowania i pisania kodu do wyrzucenia.
Poza tym myślę, że fajnie jest zobaczyć, jak Emacs może wyświetlać podgląd plików SVG i PNG w buforze, zasadniczo dając mi spersonalizowane środowisko do tworzenia takich obrazów: