Napisz program w wybranym języku, który gra idealną grę w kółko i krzyżyk na planszy 3 * 3 przeciwko ludzkiemu graczowi. Jednak każdy ruch musi być innym programem , wygenerowanym z poprzedniej iteracji.
To, jak iw jakiej formie oceniasz wkład człowieka, zależy od ciebie, ale należy go odczytać ze standardowego wkładu. Podobnie, masz swobodę wyboru metody, w jaki sposób ustalisz, który gracz zacznie (na przykład najpierw pytasz lub pozwalasz człowiekowi wprowadzić nieprawidłowy ruch, aby zasygnalizować uruchomienie komputera lub inne pomysły).
Sprawdzanie poprawności ruchów nie jest konieczne, możesz założyć uczciwego przeciwnika.
Zasadniczo masz program, który odpowiada stanowi płyty. Stan jest drukowany w dowolny rozpoznawalny sposób, ale oczekuje się co najmniej następującego poziomu szczegółowości:
X..
00X
x..
Po tym, jak ludzki gracz wprowadzi swoje ruchy, twój program musi wygenerować następną iterację jako plik źródłowy w tym samym języku (na standardowe wyjście lub do pliku) i zakończyć. Nie wolno przechowywać informacji w żadnym innym miejscu poza tym plikiem źródłowym. (nie jest konieczne, aby Twój program skompilował i uruchomił wygenerowany program, może to zrobić użytkownik - jednak nie jest to zabronione). Po wygenerowaniu i uruchomieniu wygenerowanego programu będzie on zachowywać się podobnie, wyświetlać stan, czekać na dane wejściowe użytkownika itp.
Pod koniec gry musisz wydrukować wynik (niezależnie od tego, czy wygrałeś, czy remis) w jakikolwiek jednoznaczny sposób.
Przez idealną grę mam na myśli, że program nie może przegrać, a jeśli istnieje możliwość wymuszenia wygranej, powinien wygrać.
Wygrywa najkrótszy kod , zwycięzca jest wybierany co najmniej 10 dni po pierwszym ważnym wpisie.
Otrzymasz 10% obniżkę wyniku, jeśli twój program poradzi sobie z budową i uruchomieniem kolejnej iteracji. (Wiem, najprawdopodobniej nie warto) Oczywiście sam program musi zostać zakończony do czasu, gdy następna iteracja zaakceptuje ruchy użytkownika.
Jeśli używasz dziwnych, nietypowych sztuczek, opublikuj krótkie wyjaśnienie ze swoim kodem.