Order and Chaos to odmiana kół w kółko i krzyżyk, rozgrywana na planszy 6x6. Jednak gra wyróżnia się tym, że obaj gracze mogą umieścić X lub O! W każdej turze (poczynając od Rozkazu) gracz umieszcza X lub O na dowolnym niezajętym polu.
Wygrywanie jest proste. Kolejność wygrywa, jeśli na planszy znajduje się 5 X lub OS (pionowo, poziomo lub po przekątnej). Chaos wygrywa, jeśli plansza jest zapełniona, a na planszy nie ma ciągów 5 X lub OS. Twoja praca? Ponieważ jest to Programowanie łamigłówek i Code Golf, będziesz programować grę i grać w golfa.
Zasady
- Musisz zaakceptować dane wejściowe jako współrzędne
x y t
, gdziex
iy
sąt
to typ kafelka (X
lubO
). Współrzędne zaczynają się od0 0
w lewym górnym rogu i wzrastają do5 5
(prawy dolny róg). - Musisz zaakceptować
q
wyjście i wydrukować,INVALID
jeśli użytkownik wprowadzi nieprawidłowe współrzędne, kafelki, wszelkie dane wejściowe, które nie są w formiex y t
, lub spróbuje umieścić kafelek tam, gdzie już jest. (Jedynym wyjątkiem jest toq
, że powoduje to zamknięcie programu). - Jeśli Zamówienie wygra, otrzymasz wynik
P1 WINS
. Jeśli Chaos wygra, wydasz wynikP2 WINS
. - Zamówienie musi być pierwsze.
- Puste miejsce jest reprezentowane przez
.
. - Płytki są
X
iO
(wielkie litery). Nie musisz akceptować małych liter, ale wymagana jest wielka litera. - Twoja tablica musi składać się tylko z
.XO
. - W rzeczywistości symulujesz obu graczy, nie otrzymując planszy i nie sprawdzając, kto wygra. Akceptuje ruch jako dane wejściowe, a następnie drukuje planszę, akceptuje kolejny ruch i tak dalej, dopóki jeden gracz nie wygra.
Tablica startowa wygląda następująco:
......
......
......
......
......
......
Po wejściu pierwszego gracza (zamówienia) 1 2 X
powinno to wyglądać następująco:
......
......
.X....
......
......
......
Podobnie, gdy 3 3 O
wejdzie następny gracz (Chaos) , będzie wyglądać następująco:
......
......
.X....
...O..
......
......
I to trwa, dopóki jeden gracz nie wygra.
Jak zawsze, standardowe luki, które zabierają zabawę ze wszystkiego, są zabronione.
Zwycięzcą jest ten, który ma najkrótszy kod 15 czerwca, 00:00 UTC (około miesiąca od opublikowania tego wyzwania).
źródło
INVALID
. Zredagowałem to teraz, dzięki.Odpowiedzi:
PHP, 316
Oto moje zgłoszenie. Musi to zostać wykonane przez php w wierszu poleceń.
Pamiętaj, że ten kod generuje powiadomienia z powodu niektórych wprowadzonych przeze mnie skrótów. Daj mi znać, jeśli to jest w porządku. Mogę to naprawić, dodając kilka dodatkowych znaków. Sprawdziłem tę stronę, a najwyższa odpowiedź mówi, że zakładam, że raportowanie błędów jest wyłączone, jeśli nie ma o tym wzmianki.
A oto wersja kodu bez gry w golfa:
źródło
JavaScript, 360
Edytuj Zmodyfikowana interaktywna gra, powinna działać nawet w MSIE
Zgodnie z życzeniem, gra tekstowa, wprowadzanie za pomocą wyskakującego okienka, wyświetlanie w konsoli (aby mieć czcionkę o stałej szerokości).
Wyjdź z gry, naciskając „q” lub klikając „anuluj” w odpowiedzi na monit.
Nieużywając funkcji ES5, powinien działać na dowolnej moderowanej przeglądarce (gdzie możesz mieć panel konsoli JS)
Teraz, trochę więcej zabawy Interaktywna i graficzna wersja, uruchom snippet, aby zagrać.
Pokaż fragment kodu
źródło
Java, 565 znaków D:
Jest to prawdopodobnie najdłuższy golf w historii. Naprawdę nie jestem w tym dobry.
źródło
Oktawa, 453
Wdrożenie jest dość proste, jedyna prawdziwa „sztuczka”, której można użyć
format plus
do zadbania o druk. Oto skomentowana wersja:Ze względu na wymóg sprawdzania składni i poprawności danych wejściowych kod używa
fread()
do odczytu jednego znaku na raz.Zadbałem o uporządkowane wyświetlanie tablicy i wiadomości. Jeśli jakieś dodatkowe dane wyjściowe są dopuszczalne, mógłbym zgolić kilka bajtów. Na przykład przy użyciu automatycznego drukowania (nie
disp(F)
) tablica będzie wyświetlana jakoZinterpretowałem również, że każdy ruch jest podany w osobnej linii.
Przykładowa interakcja (
-q
przełącznik służy tylko do tłumienia nagłówka Octave):Nieprawidłowy ruch spowodował zamknięcie programu (nie jestem pewien, czy było to zamierzone).
źródło
x y t
w osobnej linii (i żadnych innych danych wejściowych).