Created
December 20, 2023 08:16
-
-
Save olologin/6e02353f9dea0a91555c39c6d29f2a53 to your computer and use it in GitHub Desktop.
Скрипт для перебора существительных размером 5 букв для решения новогодней загадки от тиньков банка
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# забаненые буквы которых в слове быть не должно | |
banned_letters = [*'кадрети'] | |
# буквы которые в слове быть должны, но не на этих позициях (первая позиция это 0-й индекс) | |
banned_positions = {'с':[2, 3, 4], 'в':[1]} | |
# путь к словарю существительных русского (берётся например отсюда https://github.com/Harrix/Russian-Nouns/blob/main/dist/russian_nouns.txt) | |
dict_path = 'russian_nouns.txt' | |
words = [] | |
with open(dict_path, encoding='utf-8') as f: | |
for word in f.readlines(): | |
words.append(word.lower().replace('\r', '').replace('\n', '')) | |
def is_fitting_word(word): | |
if len(word) != 5: | |
return False | |
for letter in banned_letters: | |
if letter in word: | |
return False | |
for letter, banned in banned_positions.items(): | |
if letter not in word: | |
return False | |
for pos in banned: | |
if word[pos] == letter: | |
return False | |
return True | |
for word in filter(is_fitting_word, words): | |
print(word) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment