Напишите программу на выбранном вами языке, которая отлично играет в крестики-нолики на доске 3 * 3 против игрока-человека. Однако каждый шаг должен быть другой программой , сгенерированной из предыдущей итерации.
Как и в какой форме вы оцениваете человеческий вклад, зависит от вас, но это должно быть прочитано из стандартного ввода. Точно так же вы можете свободно выбирать метод, которым вы будете определять, какой игрок запускает (например, вы сначала спрашиваете, или вы позволяете человеку вводить неверный ход, чтобы сигнализировать, что компьютер запускается, или другие идеи).
Подтверждать ходы не нужно, вы можете предположить, что человек играет честно.
По сути, у вас есть программа, которая соответствует состоянию доски. Состояние печатается любым узнаваемым способом, но ожидается, по крайней мере, следующий уровень детализации:
X..
00X
x..
После того, как человек-игрок вошел в свои ходы, ваша программа должна сгенерировать следующую итерацию в виде исходного файла на том же языке (либо для стандартного вывода, либо для файла) и завершиться. Вам не разрешено хранить информацию где-либо еще за пределами этого исходного файла. (вашей программе не обязательно собирать и запускать сгенерированную программу, это может сделать пользователь - однако, это не запрещено). Когда сгенерированная программа собирается и запускается, она будет вести себя аналогично, отображать состояние, ждать ввода пользователя и т. Д.
В конце игры вы должны распечатать результат (независимо от того, выиграл он или нет) любым однозначно идентифицируемым способом.
Под идеальной игрой я имею в виду, что программа не должна проигрывать, и если есть возможность добиться победы, она должна выиграть.
Самый короткий код выигрывает , победитель выбирается как минимум через 10 дней после первой действительной записи.
Вы получите на 10% меньше баллов, если ваша программа справится со сборкой и запуском следующей итерации. (Я знаю, что, скорее всего, оно того не стоит). Конечно, сама программа должна быть завершена к тому времени, когда следующая итерация примет ходы от пользователя.
Если вы используете какие-то странные уловки, пожалуйста, опубликуйте краткое объяснение с вашим кодом.