Загрузка данных


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])