Создан шахматный движок, использующий 84688 регулярных выражений. Программа представляет собой интерпретатор набора команд, которые манипулируют данными о шахматной доске, представленными в виде единой текстовой строки. Это достигается за счет стековой архитектуры и переменных, позволяющих имитировать работу процессора.
Реализованы основные операции стека, такие как
Особое внимание уделяется параллельной обработке с использованием SIMD-архитектуры, которая позволяет выполнять операции одновременно для нескольких потоков. Команда
Шахматный движок использует эту архитектуру для оценки возможных ходов, с применением упрощенной версии минимаксного алгоритма на глубину 2. При этом используется параллельная обработка для одновременной оценки множества вариантов. Исходный код движка доступен на GitHub, он включает в себя также реализацию рокировки, взятие на проходе и многое другое. Для ускорения работы применяются такие методы, как удаление промежуточных переменных, использование узкоспециализированных команд и оптимизация сопоставлений регулярных выражений.
Изображение носит иллюстративный характер
Реализованы основные операции стека, такие как
push
и pop
, а также операции чтения и записи переменных. Присвоение значения переменной учитывает как случай изменения уже существующей переменной, так и создание новой. Условные операции реализованы без ветвления, с использованием меток активации и деактивации потоков. Особое внимание уделяется параллельной обработке с использованием SIMD-архитектуры, которая позволяет выполнять операции одновременно для нескольких потоков. Команда
fork
создает несколько параллельных состояний, что позволяет обрабатывать сразу несколько возможных ситуаций на доске. Шахматный движок использует эту архитектуру для оценки возможных ходов, с применением упрощенной версии минимаксного алгоритма на глубину 2. При этом используется параллельная обработка для одновременной оценки множества вариантов. Исходный код движка доступен на GitHub, он включает в себя также реализацию рокировки, взятие на проходе и многое другое. Для ускорения работы применяются такие методы, как удаление промежуточных переменных, использование узкоспециализированных команд и оптимизация сопоставлений регулярных выражений.