Dalam bermain Wordle, untuk mencari huruf-huruf yang tepat biasanya ditentukan dari kata-kata pertama. Biasanya setiap orang mempunyai preferensi katanya masing-masing. Disini kita akan sedikit bermain dengan python untuk mencari kata awal apa yang bisa kita gunakan untuk mendapatkan hasil yang optimal.
Di postingan sebelumnya saya sudah menjelaskan cara untuk mendapatkan kata pertama terbaik. Namun apakah itu cukup? Terkadang kita membutuhkan satu kata lainnya untuk mendapatkan petunjuk yang cukup.
Di postingan kali ini, saya akan mencari solusi untuk mendapatkan dua kata terbaik untuk memulai permainan Wordle.
Disini saya masih menggunakan dataset yang sama, yaitu data dari The Art of Computer Programming (TAOCP) by Donald E. Knuth.
Untuk proses mencari kata pertama kurang lebih sama dengan yang saya jelaskan di postingan sebelumnya. Ini merupakan rangkuman kode untuk mencari kata pertama.
import pandas as pd
import numpy as np
import mathdef best_words(words):
distinct_words = []
for word in words:
distinct_words.append(list(set(word)))
letter_counter = {}
for word in distinct_words:
for letter in word:
if letter in letter_counter:
letter_counter[letter] += 1
else:
letter_counter[letter] = 0
word_values = []
for word in distinct_words:
temp_value = 0
for letter in word:
temp_value += letter_counter[letter]
word_values.append(temp_value)
return word_valuesdef get_best_word(words, word_values):
return words[np.argmax(word_values)]words = []
with open('sgb-words.txt') as f:
words = [line.rstrip() for line in f]word_values = best_words(words)
best_word = get_best_word(words, word_values)
Setelah kita mendapatkan kata pertama, langkah selanjutnya adalah mendapatkan daftar kata yang tidak mengandung huruf pada kata pertama. Sebagai contoh, kata pertama yang kita dapatkan adalah arise. Maka di daftar kata dalam dataset tidak boleh mengandung huruf a, r, i, s, dan e. Jika ada kata yang mengandung huruf tersebut, maka kata tersebut akan di hapus dari daftar. Caranya adalah sebagai berikut.
result_word = []
first_word_list = list(set(best_word))for word in words:
in_word = False
i = 0
while i < len(first_word_list) and not in_word:
if first_word_list[i] in word:
in_word = True
i += 1
if not in_word:
result_word.append(word)
Dan hasilnya adalah sebagai berikut.
['which',
'think',
'might',
'until',
...
'biffy']
Jumlah kata tersebut berkurang menjadi 310 kata saja dari sebelumnya 5757 kata. Hanya tersisa sekitar 5% kata saja.
Langkah selanjutnya adalah kita akan mengulangi proses seperti cara kita mencari kata pertama. Secara lengkap kode-nya adalah sebagai berikut.
import pandas as pd
import numpy as np
import mathdef best_words(words):
distinct_words = []
for word in words:
distinct_words.append(list(set(word)))
letter_counter = {}
for word in distinct_words:
for letter in word:
if letter in letter_counter:
letter_counter[letter] += 1
else:
letter_counter[letter] = 0
word_values = []
for word in distinct_words:
temp_value = 0
for letter in word:
temp_value += letter_counter[letter]
word_values.append(temp_value)
return word_valuesdef get_best_word(words, word_values):
return words[np.argmax(word_values)]def remove_word_contain_letters(words, first_word):
result_word = []
first_word_list = list(set(first_word))
for word in words:
in_word = False
i = 0
while i < len(first_word_list) and not in_word:
if first_word_list[i] in word:
in_word = True
i += 1
if not in_word:
result_word.append(word)
return result_wordwords = []
with open('sgb-words.txt') as f:
words = [line.rstrip() for line in f]word_values = best_words(words)
first_word = get_best_word(words, word_values)
second_words = remove_word_contain_letters(words, first_word)
second_values = best_words(second_words)
second_word = get_best_word(second_words, second_values)print(first_word) # kata pertama
print(second_word) # kata kedua
Dan hasil untuk kata pertama dan kedua adalah arose dan unity.
Dari cara diatas bisa disimpulkan bahwa arose dan unity merupakan kata terbaik untuk memulai permainan Wordle. Namun, jika kita melihat pada statistik pada data jumlah huruf di postingan sebelumnya terlihat bahwa huruf u dan y tidak berada pada peringkat 10 besar huruf yang paling banyak digunakan. Itu menandakan bahwa kata arose dan unity bisa jadi bukan merupakan kata yang paling optimal.
Sekian dulu untuk postingan kali ini, di postingan selanjutnya kita akan mencari cara untuk menemukan pasangan kata yang paling optimal.




