На доске 9 фишек.Каждая плитка имеет одно из 3 состояний (пусто, круг, крест).Присвойте каждому из этих состояний число и используйте их для вычисления состояния всей доски (например, «board = tile [0] [0] | tile [0] [1] * 3 | tile [0] [2] *3 * 3 | плитка [1] [0] * 3 * 3 * 3 | ... ").Это даст вам число от 0 до 19683, представляющее текущее состояние игры.
Используйте целое число «текущее состояние игры» в качестве индекса в таблице поиска, где каждая запись в таблице поиска представляетновое состояние игры.Это будет стоить вам около 38,45 КиБ.Используйте старший (16-й) бит каждой записи, чтобы обозначить «последний игрок, выигравший игру», поэтому вам не нужно много делать, чтобы определить, выиграл ли кто-то.
Теперь напишите какой-нибудь код (на C или какой-то другой).другой язык высокого уровня) для создания этой таблицы поиска.Даже простые приемы грубой силы должны дать вам справочную таблицу, которая представляет идеального противника без особых проблем (хотя смысл игры в том, чтобы быть интересным, а идеального противника, которого невозможно победить, не весело, поэтому совершенство, вероятно, плохоев данном случае).
Единственное, что вам нужно, это ввод данных пользователем и отображение кода.Должно быть довольно легко сделать это с кодом менее 64 КБ / стеком, так что вам даже не нужно возиться с сегментами.
Эта сложная часть будет находить фактический 80186 для тестирования (и нет, современные 80x86 процессоры не так обратно совместимы, как вы думаете, поскольку в PUSH / POP было несколько ошибок и различий, если я правильно помню) ...