정보기술

정규표현식으로 체스 엔진 만들다...84,688개 식으로 움직이는 AI

2026년 5월 19일
1분
프로그래머가 정규표현식 8만여 개를 순서대로 실행시켜 체스를 두는 엔진을 만들었다. 일반적인 프로그래밍 언어를 쓰지 않은 기발한 시도다.
[한국정보기술신문] 보안 연구자 니콜라스 칼리니가 정규표현식만으로 체스 엔진을 구현했다. 이 엔진은 84,688개의 정규식을 순서대로 실행하면, 체스판을 입력받아 유효하고 합리적인 수를 두는 방식으로 작동한다.
스크린샷 2026-05-19 오후 5.52.59.png
nicholas.carlini.com 캡처

정규식 기반 가상 머신

이 프로젝트의 핵심은 정규표현식 기반의 가상 중앙처리장치(CPU)를 만드는 것이었다. 칼리니는 스택 연산, 변수 관리, 조건부 실행 등을 모두 정규식으로 구현하는 맞춤형 명령 집합 구조를 설계했다. 특히 '분기 없는 조건 실행 단일명령 다중데이터' 방식의 명령어 집합을 만들어, 복잡한 프로그래밍 논리를 정규식으로 표현할 수 있게 했다.

병렬 처리 기능

정규표현식의 강력한 특징 중 하나는 전역 치환 능력이다. 칼리니는 이 특징을 활용해 여러 실행 흐름을 동시에 처리하는 병렬 처리를 구현했다. 이는 마치 여러 덧셈을 동시에 수행할 수 있는 효율성을 가져왔다.

체스 로직의 구현

최종적으로 이 정규식 기반 시스템에서는 다음 수를 어떻게 두는지 결정하는 핵심 로직들이 작동한다. 가능한 수를 생성하고, 그것이 규칙에 맞는지 검증한 뒤, 그 수가 얼마나 좋은지 점수를 매긴다. 칼리니는 2수 앞까지 내다보는 '미니맥스' 알고리즘을 사용했는데, 이는 자신과 상대방이 한 수씩 두었을 때의 상황을 미리 계산하는 방식이다.

계산 불가능해 보였던 것이 가능하게

이 프로젝트는 매우 복잡한 계산 작업이 정규표현식만으로 표현 가능하다는 것을 보여준다. 일반적으로 프로그래밍에서 정규식은 단순 패턴 매칭에 쓰이는 도구일 뿐이다. 칼리니는 이 제한된 도구로 사실상 완전한 프로그래밍 언어 수준의 기능을 구현했다. 이는 단순한 기술 시연을 넘어 컴퓨팅의 본질에 대한 깊이 있는 탐구다.

창의적 문제 해결의 사례

이 프로젝트는 일반적인 해결 방법이 아닌 창의적이고 기발한 접근이 어떤 결과를 가져올 수 있는지 보여준다. 실용성보다는 기술의 가능성 경계를 탐구하려는 정신을 담고 있다. 이는 개발자와 보안 연구자들에게 기존의 틀에 얽매이지 말고 새로운 각도로 문제에 접근하는 것의 중요성을 시사한다.
한국정보기술신문 정보기술분과 전호재 기자 news@kitpa.org