Я в старших классах школы написал крестики нолики (3х3) для советского программируемого калькулятора Электроника Б3-21.
Как раз одного урока хватало на то, чтобы вбить программу по памяти (он сбрасывался при выключении), проверить, что работает, и похвастаться перед товарищами.
А вы говорите, Си, массивы какие-то, пять процедур. Ужос какой-то...
Моя программа, кстати, никогда не проигрывала, она могла сыграть вничью или выиграть, в зависимости от умений противника.
Здравствуйте, Pzz, Вы писали:
Pzz>Моя программа, кстати, никогда не проигрывала, она могла сыграть вничью или выиграть, в зависимости от умений противника.
А она была «честной»? Я имею в виду, что для конкретных простых правил крестиков-ноликов, конечно, можно нафигачить реализацию в лоб. Но интересней реализация более универсального традиционного подхода — честный минимакс (негамакс) и оценочная функция, с возможными оптимизациями (альфа-бета-отсечение).
Здравствуйте, Qbit86, Вы писали:
Q>А она была «честной»? Я имею в виду, что для конкретных простых правил крестиков-ноликов, конечно, можно нафигачить реализацию в лоб. Но интересней реализация более универсального традиционного подхода — честный минимакс (негамакс) и оценочная функция, с возможными оптимизациями (альфа-бета-отсечение).
У Электроники Б3-21 память программ на 60 команд, нет адресуемых регистров, а заместо них странная конструкция из 6-и регистров и того, что написано на экране, которую можно крутить вправо и влево, на один шаг за раз. Вызовов подпрограмм тоже нет, и нет переходов по вычисляемому адресу, так что подпрограммы сэмулировать не получится. Сомневаюсь, что на таком устройстве можно написать чего-то с оценочной функцией.
Разумеется, я просчитал заранее, с помощью своей головы, все возможные варианты, благо что в этой игре их немного, и забил их в программу.
Здравствуйте, Pzz, Вы писали:
Pzz>Я в старших классах школы написал крестики нолики (3х3) для советского программируемого калькулятора Электроника Б3-21. Pzz>А вы говорите, Си, массивы какие-то, пять процедур. Ужос какой-то...
Реверсил крестики-нолики от ЮТ-88, тоже будучи школьником.
Меня поразила простота решения — оно было аналитическим. Из номера поля хода человека, путём нескольких арифметических действий, вычислялся ответный ход. ЕМНИП без всяких ветвлений. Про Carry флаг не помню уже.
Pzz>Как раз одного урока хватало на то, чтобы вбить программу по памяти (он сбрасывался при выключении), проверить, что работает, и похвастаться перед товарищами.
ЮТ реализацию можно было "вбить" за пару минут. Перемены бы и поиграть хватило.
Pzz>Моя программа, кстати, никогда не проигрывала, она могла сыграть вничью или выиграть, в зависимости от умений противника.
Да, ЮТ играл точно также. Причём компьютер всегда делал первый ход "по-центру".