자모 암호 심화
봇이 무엇을 계산하는지 알면 그게 곧 최적 전략입니다. 공식을 그대로 적어 두었습니다.
연습 상대의 계산식을 그대로 씁니다
혼자 연습할 때 상대하는 젤롱봇은 정답을 모릅니다. 화면에 공개된 추측과 초록·노랑·회색 판정만 보고 다음 후보를 고릅니다. 그렇다는 건 봇이 하는 계산을 사람이 그대로 따라 할 수 있다는 뜻입니다. 여기서는 그 계산을 숨기지 않고 적습니다.
봇은 세 단계로 움직입니다. 첫째, 지금까지의 모든 판정과 모순되지 않는 낱말만 남깁니다. 둘째, 남은 후보들에서 어떤 자모가 어느 자리에 얼마나 자주 나오는지 셉니다. 셋째, 그 통계로 점수를 매겨 가장 높은 것을 고릅니다.
1단계 — 모순되는 후보를 버립니다
가장 기본이면서 가장 많이 놓치는 단계입니다. 어떤 후보 낱말이 정답일 수 있으려면, 그 낱말을 정답이라고 가정했을 때 내가 이미 받은 판정이 전부 똑같이 나와야 합니다.
예를 들어 첫 시도에서 세 번째 칸이 초록이었다면, 그 자리에 다른 자모가 있는 후보는 전부 탈락입니다. 노랑이었다면 그 자모를 포함하되 그 자리에는 두지 않은 후보만 남습니다. 회색이었다면 그 자모의 개수가 이미 확정된 만큼만 있는 후보만 남습니다.
사람이 이걸 머릿속으로 전부 하기는 어렵지만, 방금 받은 판정 하나만이라도 끝까지 적용하는 습관이 승률을 크게 바꿉니다. 초록으로 확정된 자리를 다음 시도에서 다른 자모로 바꾸는 것은 차례를 버리는 일입니다.
참고로 봇은 후보를 최대 384개까지만 모으고, 그 후보를 찾기 위해 최대 16,384개를 훑습니다. 사전 전체를 매번 다 보지는 않는다는 뜻입니다. 사람이 서너 개 후보만 제대로 검증해도 충분히 따라갈 수 있는 규모입니다.
2단계 — 남은 후보에서 빈도를 셉니다
살아남은 후보들을 놓고 두 가지를 셉니다.
자리별 빈도. 첫 칸에 ㄱ이 몇 개, ㄴ이 몇 개인지처럼 자리마다 따로 셉니다.
전체 빈도. 자리와 무관하게 그 자모를 포함한 후보가 몇 개인지 셉니다. 같은 후보 안에 같은 자모가 두 번 나와도 한 번만 셉니다.
3단계 — 점수 공식
그리고 후보마다 이렇게 점수를 냅니다.
점수 = 각 칸마다 (그 자리에 그 자모가 오는 후보 수 × 2) 를 더하고, 거기에 (그 자모를 포함한 후보 수) 를 더한다. 단 같은 자모가 두 번째로 나오면 뒤쪽은 0으로 친다.
짧은 공식인데 실전 지침이 세 개나 나옵니다.
흔한 자모를 쓰세요
두 항 모두 “남은 후보에서 몇 번 나오는가”에 비례합니다. 희귀한 자모를 찔러 맞히면 크게 이득일 것 같지만, 빗나갈 확률이 훨씬 높아서 기대값은 낮습니다. 남은 후보 다수가 공유하는 자모를 넣어 판을 크게 가르는 편이 낫습니다.
흔한 자리에 놓으세요
자리까지 맞는 항에는 가중치 2배가 붙습니다. 같은 자모라도 아무 데나 넣는 것과, 그 자모가 가장 자주 오는 자리에 넣는 것은 정보량이 다릅니다. 초록은 자리를 확정하지만 노랑은 자리를 지울 뿐이니까요.
같은 자모를 반복하지 마세요
이게 직관적으로 잘 안 나오는 지점입니다. 공식에서 같은 자모가 두 번째로 등장하면 전체 빈도 항이 0이 됩니다. 이미 그 자모에 대해 물어봤으니 두 번째 등장은 새로 알려주는 게 거의 없다는 뜻입니다.
그래서 5칸짜리 판에서 “ㄱ ㅏ ㄱ ㅏ ㅇ”처럼 반복이 많은 낱말은 나쁜 시도입니다. 칸은 다섯인데 실제로 묻는 자모는 셋이니까요.서로 다른 자모로 칸을 채우는 낱말이 언제나 낫습니다. 특히 첫 시도에서 그렇습니다.
난이도는 이 순위를 얼마나 흐리느냐입니다
점수를 매긴 뒤 봇은 항상 1등을 고르지는 않습니다. 난이도에 따라 상위 몇 개 중에서 하나를 집습니다.
- 쉬움 — 상위 24개 중에서
- 보통 — 상위 12개 중에서
- 어려움 — 상위 5개 중에서
- 헬 — 언제나 1등
그리고 헬이 아닌 난이도에서는 일부러 1등을 피합니다.최선의 수를 알면서도 두 번째부터 고르는 것이라, 쉬움 난이도의 봇은 약한 게 아니라 정보를 덜 캐는 상대입니다. 이 차이가 중요한 이유는, 봇을 이겼다고 해서 자기 판단이 최적이었다는 뜻은 아니기 때문입니다. 헬을 상대로 이겨야 공식대로 두고 있다는 확인이 됩니다.
선택은 지금까지의 공개 기록으로 결정됩니다. 같은 판을 다시 불러도 봇의 수가 바뀌지 않고, 비공개 정답을 참고하지도 않습니다.
여러 명이 할 때는 계산이 달라집니다
혼자 할 때는 “정답을 가장 빨리 찾는 수”가 최선입니다. 그런데 여럿이 하는 판에서는 목표가 둘로 갈립니다. 먼저 맞히면 이기고, 못 맞혀도 남이 밝히지 못한 자모 정보를 처음 드러내면 기여 점수를 받습니다.
그래서 확률이 낮은 정답을 계속 찌르는 것보다, 후보를 크게 가르는 수가 나머지 순위에서 유리합니다. 위 공식이 정확히 그 “크게 가르는 수”를 고르는 식이라, 여럿이 하는 판에서도 그대로 씁니다.
다만 마지막 한두 후보만 남은 상황은 예외입니다. 그때는 정보를 더 캐는 것보다 그냥 맞히는 쪽이 낫습니다. 남은 후보가 둘이면 정보 수집은 의미가 없고, 찍어도 절반입니다.
첫 시도에 무엇을 넣을까
첫 시도에는 판정 이력이 없으니 후보 전체가 살아 있습니다. 그러면 위 공식은 “사전 전체에서 흔한 자모를, 흔한 자리에, 겹치지 않게”로 단순해집니다.
한글에서는 모음이 반드시 글자 수만큼 들어가고 그중 ㅏ·ㅓ·ㅗ·ㅣ의 빈도가 높습니다. 자음은 ㄱ·ㄴ·ㄹ·ㅅ·ㅇ이 흔합니다. 그러니 첫 시도는 흔한 모음 두세 개와 흔한 자음 두세 개를 겹치지 않게 담은 낱말이 좋습니다.
자모 수 설정도 함께 보세요. 5칸이면 보통 두 글자, 7칸이면 두세 글자 정도입니다. 쌍자음이나 겹받침이 있으면 글자 수보다 칸이 늘어나므로, 칸 수만 보고 글자 수를 어림잡으면 자주 어긋납니다. 이 분해 규칙은 자모 암호 규칙에 정리해 두었습니다.
정리
- 받은 판정과 모순되는 후보를 먼저 지웁니다. 초록 자리는 절대 바꾸지 않습니다.
- 남은 후보에서 흔한 자모를 고릅니다. 희귀한 자모 찍기는 기대값이 낮습니다.
- 그 자모를 가장 자주 오는 자리에 놓습니다. 자리까지 맞으면 가치가 두 배입니다.
- 같은 자모를 반복하지 않습니다. 두 번째부터는 정보량이 0에 가깝습니다.
- 여럿이 할 때는 후보를 크게 가르는 수가 기여 점수까지 챙깁니다.
- 후보가 한두 개로 좁혀지면 정보 수집을 멈추고 그냥 맞힙니다.
바로 해보기
여기까지 읽었다면 다음은 한 판입니다. 자모 암호 입장 화면에서 혼자 연습하거나, 방을 만들어 링크나 6자리 코드로 상대를 부를 수 있습니다. 설치할 파일은 없고 휴대폰·태블릿·PC의 브라우저에서 같은 주소로 들어옵니다.
다른 게임의 규칙이 궁금하면 게임 가이드 목록으로 돌아가세요. 둘이 할 게임만 모아 보려면 커플게임 고르기, 짧게 끝나는 판을 찾는다면 쉬는 시간 게임 고르기가 빠릅니다.