Nagrody
Nr 1 ( nagrodzony )
Wrzucę 50 powtórzeń za pierwszą prawidłową odpowiedź
Nr 2 ( nagrodzony )
Wrzucę kolejne 100 powtórzeń za najkrótszą prawidłową odpowiedź.
Nr 3 ( otwarty na zgłoszenia) )
Wrzucę 200 powtórzeń dla pierwszego z istotnie krótszą prawidłową odpowiedzią. Znaczące, co najwyżej 45% obecnie najkrótszej odpowiedzi ( 564 bajtów x 0,45 = maks. 254 bajtów ).
Gra
Pamiętasz klasyczną grę „ Nine Men's Morris ” czy po prostu „ Mill ”? Istnieje odmiana o nazwie Three Men's Morris, która jest trochę jak zmienny kółko i krzyżyk.
Zasady
Oto pusta plansza gry:
a b c
1 [ ]–[ ]–[ ]
| \ | / |
2 [ ]–[ ]–[ ]
| / | \ |
3 [ ]–[ ]–[ ]
[ ]
jest polem i |–/\
reprezentuje trasy między tymi polami.
Gra rozgrywana jest przez dwóch graczy 1
i 2
którzy każdego Place 3 żetony na planszy. To się już zdarzyło i jesteśmy w grze. Gra zostaje wygrana, jeśli jeden gracz może utworzyćmill
pionowy lub poziomy rząd 3 żetonów gracza.
Tokeny można przenosić na planszy wzdłuż linii łączących, zgodnie z tą zasadą:
Do dowolnego sąsiedniego pustego położenia (tj. Od położenia krawędzi do środka lub od środka do położenia krawędzi lub od położenia krawędzi do sąsiedniej pozycji krawędzi
Gracz musi wykonać ruch, chyba że nie ma sąsiedniej pustej pozycji, w którym to przypadku ruch jest pomijany.
Wyzwanie
Jesteś graczem, 1
a twój ruch jest następny. Napisz program lub funkcję, która określa, czy:
- możesz wymusić wygraną 2 lub mniej ruchami ( ostateczna wygrana )
- możesz wygrać 2 lub mniej ruchami, jeśli twój przeciwnik popełni błąd ( możliwa wygrana )
- nie możesz wygrać z 2 lub mniej ruchami, ponieważ potrzebujesz więcej ruchów lub ponieważ ruchy wymuszone prowadzą przeciwnika do zwycięstwa ( niemożliwe do wygrania )
Wymagania
- Nawet jeśli zdecydowanie wygrasz, gdy nudzisz przeciwnika na śmierć, twój program musi zakończyć się w określonym czasie.
- Możesz napisać program lub funkcję.
Wejście
Gracze są reprezentowani przez 1
i 2
. 0
określa wolne pole. Możesz przyjmować dane wejściowe jako macierz lub tablicę.
Określony
A B C D
2 1 0 | 2 1 0 | 1 0 1 | 1 2 2
2 1 2 | 0 1 0 | 1 0 2 | 2 1 O
0 0 1 | 2 2 1 | 0 2 2 | O O 1
A: [2,1,0,2,1,2,0,0,1]
B: [2,1,0,0,1,0,2,2,1]
C: [1,0,1,1,0,2,0,2,2]
D: [1,2,2,2,1,0,0,0,1]
Możliwy
A B C
1 0 1 | 1 0 1 | 1 2 2
1 2 2 | 1 2 0 | 0 0 1
2 0 0 | 2 0 2 | 2 1 0
A: [1,0,1,1,2,2,2,0,0]
B: [1,0,1,1,2,0,2,0,2]
C: [1,2,2,0,0,1,2,1,0]
Niemożliwy
A B
1 0 0 | 1 2 0
1 2 2 | 2 1 0
2 0 1 | 1 2 0
A: [1,0,0,1,2,2,2,0,1]
B: [1,2,0,2,1,0,1,2,0]
Wynik
Twój program powinien wypisać / zwrócić buźkę:
- Zdecydowana wygrana:
:)
- Możliwa wygrana:
:|
- Nie można wygrać:
:(
Przykłady
Zdecydowana wygrana w dwóch ruchach:
[2][1][ ] 1. [2][1][ ]
[2][1][2] -> [2][1][2]
[ ][ ][1] [ ][1][ ]
[2][1][ ] 1. [2][1][ ] [ ][1][ ] 2. [ ][ ][1]
[ ][1][ ] -> [ ][ ][1] -> [2][ ][1] -> [2][ ][1]
[2][2][1] [2][2][1] [2][2][1] [2][2][1]
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][ ][2] -> [1][ ][2] -> [1][ ][2] -> [ ][ ][2]
[ ][2][2] [ ][2][2] [2][ ][2] [2][ ][2]
Możliwe zwycięstwo w dwóch ruchach:
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][2][ ] -> [1][2][ ] -> [1][2][2] -> [ ][2][2]
[2][ ][2] [2][ ][2] [2][ ][ ] [2][ ][ ]
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][2][ ] -> [1][2][ ] -> [1][2][2] -> [ ][2][2]
[2][ ][2] [2][ ][2] [2][ ][ ] [2][ ][ ]
[1][2][2] 1. [ ][2][2] [2][ ][2] 2. [1][2][2]
[ ][ ][1] -> [1][ ][1] -> [1][ ][1] -> [1][1][1]
[2][1][ ] [2][1][ ] [2][1][ ] [2][ ][ ]
Nie można wygrać w dwóch ruchach:
[1][ ][ ]
[1][2][2]
[2][ ][1]
Premia
W przypadku, gdy możliwa jest określona wygrana, a Twój program generuje ruchy jednej drogi do sukcesu, a także a1:a2
(1 ruch) lub a1:a2,a3:b2
(2 ruchy), możesz wycofać 30% liczby bajtów.
To jest golf golfowy - wygrywa więc najkrótsza odpowiedź w bajtach. Standardowe luki są niedozwolone.
Podziękowania dla Petera Taylora, który naprawił kilka błędów i poprawił brzmienie w piaskownicy .
[1,0,0,2,1,0,2,2,1]
, gracz 2 nie może się ruszyć - czy to wygrana dla gracza 1?