Суббота, 23.11.2024
1c всегда!
Меню сайта
Статистика

Онлайн всего: 21
Гостей: 21
Пользователей: 0
Форма входа
Главная » 2019 » Декабрь » 3 » LeanChess — самые маленькие компьютерные шахматы в мире
10:38
LeanChess — самые маленькие компьютерные шахматы в мире

LeanChess — самые маленькие компьютерные шахматы в мире

https://habr.com/ru/post/478240/

Меня зовут Дмитрий Шехтман, и я автор самых маленьких компьютерных шахмат в мире.

Началось всё с того, что моя (ныне бывшая) девушка предложила написать компьютерные шахматы. Идея меня заинтересовала, и я решил этим заняться. Правда, почитав интернет, я понял, что опоздал лет на сорок. Особенно впечатляли шахматные разработки Оскара Толедо — на Си размером в 1257 байт, на JavaScript в 1023 байта и, наконец, Atomchess на ассемблере x86, компилирующийся в 392 байта.

Прежде, чем я вернулся к теме, прошло несколько месяцев. Как оказалось, за это время был установлен новый рекорд размера — ChesSkelet для ZX Spectrum занимал всего 352 байта. Правда, он не знал всех правил и играл весьма слабо, но всё же! А не замахнуться ли мне на шахматы на ассемблере? — подумал я.

Писать было решено под 8086. Следует заметить, что задача оптимизации по размеру машинного кода первоначально не ставилась. Шансы переплюнуть Atomchess казались стремящимися к нулю, не говоря уже о том, чтобы потягаться с чемпионом мира — реализацией на ассемблере восьмиразрядного процессора.

 

Несколько дней спустя у меня на руках была программа, выводящая доску с фигурами (в виде восьми строк текста) и генератор ходов, поддерживающий рокировку, замену пешек на произвольные фигуры и взятие на проходе. Правда, с небольшой оговоркой: программа не работала.

 

В результате нескольких "перезапусков" с исключением всего лишнего получился довольно изящный код. Предвидя возражения относительно того, что прыжок пешкой через поле нельзя считать лишним, предлагаю ознакомиться с описаним возможностей ChesSkelet-352. В какой-то момент возникла идея переключиться на оптимизацию. Как выяснилось, с уменьшением размера программы она становится более доступной для понимания и отладки. Немало помогло добавление комментариев к каждой строке. В конце концов ошибка нашлась.

 

Когда уже казалось, что дальше оптимизировать некуда, совершенно случайно обнаружились команды pusha и popa, позволившие сэкономить ещё около 18 байт (точные данные не сохранились). Atomchess был повержен. Правда, за счёт повышения требований к системе — до IBM PC AT.

 

Не останавливаясь на дальнейших этапах разработки, перейдём к итогам. Минимальная вариация в виде COM-файла для DOS занимает 328 байт — на 24 байта меньше предыдущего рекордсмена (напомним, восьмиразрядного). Как уже было сказано, речь не идёт о полноценных шахматах. Ходы соперника вообще не проверяются на корректность. Зато реализован ИИ в виде полного NegaMax-перебора глубиной в три полухода с оценкой по материалу (при увеличении глубины до четырёх скорость приемлемая).

 

На данный момент LeanChess доступна в следующих вариациях:

 

  1. Barebone DOS (328 байт)
  2. Barebone BIOS (333 байта)
  3. Classic DOS (338 байт)
  4. Classic BIOS (342 байта)

 

Все четыре (теперь) играют одинаково, различия лишь в отображении доски (и нажатий клавиш). Не удивляйтесь "офицерам" в виде О в вариациях Barebone.

Для того, чтобы запустить игру, вам потребуется DOSBox. Вводите ходы в формате e2e4 без нажатия Enter. Проиграв, закройте окно эмулятора.

Скриншот


image

Ссылки

 

Просмотров: 305 | Добавил: pasjunja | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Календарь
«  Декабрь 2019  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
Архив записей
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2024
    Создать бесплатный сайт с uCoz