import re
from google.colab import files
class TrieNode:
def __init__(self):
self.children = {}
self.end = False
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self, word):
node = self.root
for ch in word:
if ch not in node.children:
node.children[ch] = TrieNode()
node = node.children[ch]
node.end = True
def search(self, word):
node = self.root
for ch in word:
if ch not in node.children:
return False
node = node.children[ch]
return node.end
print("загрузи dict_ru")
uploaded_ru = files.upload()
print("загрузи dict_en")
uploaded_en = files.upload()
print("загрузи warandpeace")
uploaded_text = files.upload()
dict_ru_file = list(uploaded_ru.keys())[0]
dict_en_file = list(uploaded_en.keys())[0]
warandpeace_file = list(uploaded_text.keys())[0]
trie = Trie()
with open(dict_ru_file, encoding="utf-8") as f:
for line in f:
trie.insert(line.strip().lower())
with open(dict_en_file, encoding="utf-8") as f:
for line in f:
trie.insert(line.strip().lower())
with open(warandpeace_file, encoding="utf-8") as f:
text = f.read().lower()
words = re.findall(r'\w+', text)
errors = []
for w in words:
if not trie.search(w):
errors.append(w)
print("ошибок:", len(errors))
print("первые 20 ошибок:", errors[:20])