한 개발자가 고전 슬라이딩 블록 퍼즐인 클로츠키(Klotski)의 해법을 단 311바이트(byte)의 C++ 코드로 구현해 공개했습니다. 이 솔버는 주어진 클로츠키 보드에서 가장 큰 2x2 블록을 목표 위치로 옮기는 최단 경로를 찾아내며, 보드 상태를 64비트(bit) 정수(uint64_t) 하나로 압축하여 메모리 효율성을 극대화한 것이 특징입니다.
클로츠키는 4x5 크기의 보드에 다양한 크기의 블록들이 배치되고, 두 개의 빈 공간을 활용해 블록을 움직여 특정 블록을 목표 지점으로 이동시키는 퍼즐 게임입니다. 이 솔버는 너비 우선 탐색(BFS) 알고리즘을 기반으로 하며, 모든 가능한 보드 상태를 탐색하여 최단 이동 횟수를 계산합니다. 특히, 20개의 각 셀(cell) 상태를 3비트로 인코딩하여 전체 보드를 60비트, 즉 64비트 정수 하나에 저장하는 독창적인 방식을 사용했습니다. 이는 약 3.1KB에 달하는 일반적인 솔버 코드에 비해 압도적으로 작은 311바이트로, 코드의 간결성과 성능을 동시에 잡았다는 평가를 받습니다.
이 프로젝트는 단순히 퍼즐을 푸는 것을 넘어, 복잡한 문제 해결을 위한 알고리즘과 데이터 구조를 극도로 효율적으로 구현하는 방법을 보여줍니다. 특히 제한된 자원 환경에서 소프트웨어를 개발해야 하는 경우, 이처럼 압축된 코드와 효율적인 데이터 표현 방식은 중요한 영감을 줄 수 있습니다. 또한, 퍼즐 게임 개발자들에게는 게임의 난이도를 분석하거나 최적의 해법을 검증하는 도구로 활용될 수 있으며, 컴퓨터 과학 교육 분야에서는 자료 구조와 알고리즘의 실제 적용 사례로도 가치가 있습니다.