Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from datetime import datetime
- # I want to know time when the results was be created
- now = datetime.now()
- current_time = now.strftime("%H-%M-%S")
- # Dict is mapping A:0 - Z:25 to create index form letter. Prepared to extend beyond ASCI characters
- LtN_dict = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9, 'k': 10, 'l': 11, 'm': 12,
- 'n': 13, 'o': 14, 'p': 15, 'q': 16, 'r': 17, 's': 18, 't': 19, 'u': 20, 'v': 21, 'w': 22, 'x': 23, 'y': 24,
- 'z': 25}
- # wordle_corpus is base of all 5-letter words in Wordle game
- def CreateWordleCorpus():
- global wordle_corpus
- with open(input_file_name, "r") as input_file:
- wordle_corpus = []
- for word in input_file:
- wordle_corpus.append(word)
- def CreateLetterCounterList():
- global letter_counter_list
- letter_counter_list = []
- for x in range(26):
- letter_counter_list.append(0.)
- def CountLetters():
- for word in wordle_corpus:
- word = word.strip()
- for letter in word:
- letter_counter_list[LtN_dict.get(letter, 0)] += 1
- def CalculateLetterFreq():
- global letter_freq_list
- letter_freq_list = letter_counter_list
- for x in range(len(letter_counter_list)):
- letter_freq_list[x] = letter_freq_list[x] / len(wordle_corpus)
- def CreateWordFreqTuple():
- global word_freq_tuple
- word_freq_tuple = []
- for word in wordle_corpus:
- word = word.strip()
- word_val = 0
- uniq_letters = ''
- for letter in word:
- if letter not in str((''.join(set(uniq_letters)))):
- word_val += letter_freq_list[LtN_dict.get(letter, 0)]
- uniq_letters += letter
- word_freq_tuple.append((word, word_val))
- # tuple has structure ('word','word_value'); val_key[1] is sorting for word_value
- def SortWordFreqTuple():
- word_freq_tuple.sort(key=lambda val_key: val_key[1], reverse=True)
- def SaveResultsToFile():
- output_file.write("Current Time: " + str(current_time) + '\n')
- output_file.write('Words count: : ' + str(len(wordle_corpus)) + '\n')
- for x in range(len(word_freq_tuple)):
- output_file.write(str(word_freq_tuple[x]) + '\n')
- print('DONE! Results is saved successfully to: ' + output_file_name)
- # ---------------------------------------------------------
- def GreenLetter(tested_letter, wordle_input, letter_index):
- if (wordle_input[letter_index] == tested_letter):
- return True
- else:
- return False
- def YellowLetter(tested_letter, wordle_input):
- if (tested_letter in wordle_input):
- return True
- else:
- return False
- def BlackLetter(tested_letter, wordle_input):
- if (tested_letter not in wordle_input):
- return True
- else:
- return False
- # call function based od letter in wordle feedback
- def TestLetter(wordle_feedback_key, tested_letter, letter_index, wordle_input):
- match wordle_feedback_key[letter_index]:
- case 'G':
- return GreenLetter(tested_letter, wordle_input, letter_index)
- case 'Y':
- return YellowLetter(tested_letter, wordle_input)
- case 'B':
- return BlackLetter(tested_letter, wordle_input)
- case _:
- print('input error!')
- return 'input error!'
- # checking if all letters is matching to Wordle feedback
- def MatchWords(wordle_input, wordle_feedback_key, tested_word):
- letter_indexMW = 0
- good_word = True
- for tested_letter in tested_word:
- if good_word == False:
- return False
- good_word = TestLetter(wordle_feedback_key, tested_letter, letter_indexMW, wordle_input)
- letter_indexMW += 1
- return True
- def CreateMatchingWordList():
- global MatchingWordList
- MatchingWordList = []
- for tested_word in avaliable_words_list:
- tested_word = tested_word.strip()
- if MatchWords(wordle_input, wordle_feedback_key, tested_word) == True:
- MatchingWordList.append(tested_word)
- # ------------------------------------------------------
- # input_file_name = "input1.txt"
- input_file_name = "wordle_12972.txt"
- output_file_name = "results.txt"
- output_file = open(output_file_name, "w")
- CreateWordleCorpus()
- CreateLetterCounterList()
- CountLetters()
- CalculateLetterFreq()
- CreateWordFreqTuple()
- SortWordFreqTuple()
- SaveResultsToFile()
- wordle_input = 'aloes'
- wordle_feedback_key = 'YBBYY'
- avaliable_words_list = wordle_corpus
- CreateMatchingWordList()
- wordle_corpus = MatchingWordList
- print(wordle_corpus)
Advertisement
Add Comment
Please, Sign In to add comment