Выполнил участник студии г. Оренбурга Гимназии №1 Пантелеев Михаил и при моральной поддержке сокомандников
Все решения написаны инвалидно и грязно, за что заранее прошу прощения.
Решения для каждого задания хранятся в соответствующих директориях, а сами задания в файлах TASK.md
По расстоянию Левенштейна сравнивал каждую возможную пару слов, ничего особенного - 91.5 баллов (из 100)
В первом решении пришлось написать алгоритм для последовательного исправления ошибок в слове, чтобы получить нужное. Поэтому решил сравнивать каждую пару слов именно по этой функции вместо Левинштейна - итого 96.97.
Через неделю сделал второй словарь со словами в обратном порядке и прогнал там тоже, за что пару баллов получил сверху.
Больше по этой таске ничего не делал. Возможно, если немного улучшить функцию исправления, то больше баллов будет
Банально по Левенштейну сравнивал и зашло на ура, а именно 94 балла
Тут жесть какую-то придумал:
- создаем алфавит из всех уникальных слов в названиях университетов
- преобразуем весь словарь в векторы (математические) на основе этого самого алфавита
- идем по запросам (входные данные), разбиваем на слова и для каждого ищем ближайшее из алфавита
- преобразуем на основе прошлого пункта в векторы каждый запрос
- рассматриваем каждую возможную пару векторов запрос - верное название и по косинусу ищем самое близкое верное название
Казалось бы, гениально и вообще прекрасно, но 96.85 баллов(
Тут абсолютно хз, что можно улучшить. Чувство, будто все с нуля надо писать
Помимо приведенных решений также пытался делать через косинусы и индексацией через слоги, буквы и слова (во втором). Но успешным ни одно из этих решений ни для одной задачи не оказались, поэтому даже не прикреплял эти файлы.
Также можно заметить, что странный формат выходных файлов — их я преобразовывал в нормальный небольшими скриптами, поэтому их также не добавил в репу.