Programming

Wordle 풀이 접근 최적화

Wordle은 5글자 단어 맞추기 게임이며 매일 하나씩 제시되어 전세계인들이 같이 푸는 퍼즐이다.

총 12972개의 단어가 날짜별로 미리 마련되어 있으며 약 35년치에 해당한다.

이미 공개된 단어 목록이 있어서 이걸 기반으로 스크립팅을 해서 분석해봤다.

여기에서 wordle 퍼즐을 쉽게 푸는 방법을 제시하고 있으니 관심있는 사람들은 두번째 단락의 굵은 글씨를 살펴보면 도움이 될 것이다.

글자의 출현 빈도에 따른 추천 단어

총 12972개의 단어에 존재하는 글자의 출현빈도 순은 다음과 같다.

s e a o r i l t n u d y c p m …

맨 처음에 나오는 s e a o r을 가지고 조합을 해서 존재할 수 있는 단어는 arose, aeros, soare가 있는데, 기억하기 쉽게 arose를 고른다.

이걸 제외한 글자 i l t n u를 가지고 조합을 해서 존재할 수 있는 단어는 unlit과 until이 있다.

비슷한 과정을 반복하면 arose, unlit, duchy가 서로 덜 겹치면서 출현빈도가 가장 높은 단어들임을 알 수 있다.

글자의 위치별 출현 빈도에 따른 추천 단어

5글자로 구성된 단어이므로 각각의 글자 위치에 올 수 있는 글자들의 출현 빈도를 각각 계산하고, 12972개 단어 각각에 대해 글자별 출현 확률을 곱해서 어떤 단어가 가장 흔한 글자로 구성되었는지 계산했다.

cares가 가장 높은 확률을 가지고 있었고, 이 글자들을 제외하고 나면 그 다음으로는 ponty, 이 과정을 반복하면 build가 나왔다.

두 가지 전략 비교

첫번째 전략은 글자의 정확한 위치는 잘 모르겠지만 일단 존재할 수 있는 글자를 추정할 때는 유리하다. 두번째 전략은 글자의 정확한 위치를 알아내기에는 유리하지만 존재 여부를 확인할 때는 다소 불리할 수 있다.

정확한 위치를 5개 글자 모두에 대해 알아낸다면 100점이라고 가정할 때, 하나의 글자의 정확한 위치를 알아내는 것은 20점이라고 할 수 있다. 그러나 아무래도 앞쪽 글자를 알게 되면 더 빠르게 유추할 수 있으므로 24, 22, 20, 18, 16점으로 차등화했다.

정확한 위치는 모르지만 일단 존재 여부를 확인했다면, 정확한 위치를 아는 것에 비해서는 다소 도움이 안 될 수 있다. 추정했던 위치에는 그 글자가 존재하지 않고 나머지 4개 위치에 존재할 수 있음을 알 수 있으므로 정확한 위치로 얻을 수 있는 20점의 1/4인 5점을 배점하면 되겠다.

이렇게 배점 규칙을 정하고 첫번째 전략(arose-unlit-ducky)과 두번째 전략(cares-ponty-build)을 가지고 전체 단어 집합에 대해 추정해보고 얼마나 점수를 얻는지 계산하여 두 전략을 비교해보면 당연하게도 두번째 전략이 우위에 있다. 대략 33% 정도 더 유리하다.

추천 사이트

과거 단어들까지 다시 풀어볼 수 있는 사이트가 있다.

https://www.devangthakkar.com/wordle_archive/?1