AI 코치가 틀릴 수 없는 스도쿠 앱을 만들었습니다
요약
개발자는 스도쿠 앱 [Kodiak Sudoku]를 제작하며, 특히 AI 코치 구현에 중점을 두었습니다. LLM의 추론 능력을 활용하되, 잘못된 제안을 방지하기 위해 엄격한 스키마와 서버 측 검증 로직을 도입했습니다. 또한 '노출 싱글'부터 '스워드피시'까지 15개의 테크닉 레슨을 추가하여 교육적 경험을 강화했습니다.
핵심 포인트
- LLM 기반 코치 구현 시, 잘못된 제안 방지를 위한 엄격한 스키마와 서버 검증이 필수입니다.
- AI의 추론 능력을 활용하되, 결정론적 솔버와의 비교를 통해 모든 이동을 검증해야 합니다.
- 사용자 경험 개선을 위해 비트마스크 등 최적화 기법(Uint16Array)을 적용했습니다.
- 단순 풀이를 넘어 '노출 싱글' 같은 테크닉 여정으로 교육 콘텐츠를 확장했습니다.
저는 매일 아침 스도쿠를 합니다. 제가 시도해 본 모든 앱은 숫자를 입력하는 속도가 느리거나, 광고로 가득 차 있거나, 혹은 둘 다였습니다. 그래서 저는 Kodiak Sudoku를 만들었고, 그 과정에서 예상보다 더 흥미로운 세 가지 문제에 직면했습니다.
1. 81개의 셀을 즉각적으로 느끼게 만들기
스도쿠 보드는 81개의 셀로 이루어져 있으며, 각 셀은 최대 9개의 연필 표시(pencil marks)를 가질 수 있습니다. 만약 숫자를 입력할 때마다 전체 그리드가 다시 렌더링된다면, 특히 저렴한 휴대폰에서는 그 느낌을 받게 됩니다.
효과적이었던 방법:
- 비트마스크로 노트 처리. 81개 셀의 모든 노트는 단일
Uint16Array에 저장됩니다. 비트 3이 설정되어 있다는 것은
이 부분이 제가 가장 긴장했던 부분입니다. 저는 사용자의 실제 보드를 보고 '5번 박스를 봐, 4는 두 칸에만 들어갈 수 있어'와 같이 말해주는 코치가 필요했습니다. 언어 모델(LLM)은 이런 종류의 설명에는 능숙합니다. 하지만 잘못된 숫자를 자신감 있게 제안하는 것에도 매우 능합니다.
누군가의 보드에 잘못된 숫자가 있다는 것은 최악의 실패입니다. 조용하고, 다른 모든 것에 대한 신뢰를 무너뜨립니다. 그래서 디자인은 다음과 같습니다:
- 모델은 솔루션이 아닌 보드를 본다. 사람이 위치에 대해 추론하는 것처럼 해야 합니다.
- 출력은 엄격한 스키마이다. 짧은 힌트, 한 문장의 이유, 그리고 선택적인 이동(셀과 숫자)입니다. 파싱되지 않는 것은 모두 버려집니다.
- 제안된 모든 이동은 서버 측에서 확인된다. 저장된 솔루션 및 결정론적 솔버(deterministic solver)의 다음 단계와 비교하여 검증됩니다. 실패하면, 그 이동은 폐기되고 설명만 표시됩니다.
- 2.5초 예산이 있다. 모델이 느리면, 플레이어는 솔버로부터 해당 기법에 대한 정형화된 설명을 가진 결정론적 힌트를 받습니다. 패널이 비어 있는 일은 절대 없습니다.
- 클라이언트는 검사를 리디렉션할 수 없다. 각 요청은 제출된 보드의 주어진 값(givens)이 원래 퍼즐과 일치하는지 확인하므로, 조작된 보드가 검증기(validator)를 다른 솔루션으로 유도할 수 없습니다.
검증 함수는 프로젝트에서 가장 많이 테스트된 코드입니다. 거부된 이동은 기록되므로, 모델 업데이트가 추측을 더 시작하는지 확인할 수 있습니다.
풀이뿐 아니라 교육하기
코치는 플레이어가 어휘를 알 때 가장 잘 작동하므로, 저는 '노출 싱글(naked singles)'부터 '스워드피시(swordfish)'까지 15개의 짧은 레슨으로 구성된 테크닉 여정(Technique Journey)을 추가했습니다. 각 레슨은 실제 검증된 퍼즐이며 현장에서 푸는 것이고, 같은 보드가 블로그 게시물에 나타나므로 설명 바로 옆에서 x-wing을 시도해 볼 수 있습니다.
스택
스택
Next.js 15 (App Router), React 19, Postgres 및 인증을 위한 Supabase, 수동 작성 SQL 마이그레이션을 사용하는 Drizzle, Zustand, 모든 서버 경계에서 Zod를 사용했습니다. Vercel에 호스팅되었습니다. 결제는 플레인 fetch로 호출되는 Stripe Checkout을 사용하며 SDK는 사용하지 않았습니다. 퍼즐은 3백만 개의 등급이 매겨진 스도쿠의 공개 데이터셋에서 가져왔으며, 네 가지 난이도로 분류되어 있고, 모든 문제는 고유한 해답을 위해 솔버(solver)에 의해 검증됩니다.
자체적으로 수익을 창출하는 방법
게임, 일일 퍼즐, 리더보드 및 학습 자료는 광고 없이 무료입니다. Kodiak Plus를 사용하면 AI 코치, 경기 후 분석(AI post-game debriefs), 그리고 무제한 빠른 플레이 기능을 추가할 수 있습니다. 다른 모든 사용자들은 여전히 솔버 기반의 힌트를 받습니다. 또한 안드로이드 앱도 있습니다.
만약 이용해 보신다면, 키보드 컨트롤이 어떤 느낌인지와 'Hard' 난이도가 실제로 어려운지 듣고 싶습니다. 일일 퍼즐은 UTC 자정(midnight)에 초기화됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기