Продолжаем, если это кому-нибудь интересно

Может, подскажете чего-нибудь ещё
Выяснилось, что с числами такой метод зачёта не работает. Ведь, скажем, 1839 год сильно похож на 1899, и программа засчитает такой ответ, хоть и не должна. Если назначить цифрам слишком большие веса, то также получится не очень хорошо - "15 сентября" будет засчитываться при ответе "15 декабря". Тут нужно придумать что-то другое.
Например, возможен такой подход: цифры проверяются отдельно старым способом (на точное совпадение), а вся остальная фраза - на частичное совпадение. При этом ответ засчитывается, если при обоих сравнениях получен утвердительный ответ.
Также нехорошо оказалось то, что правильный ответ может быть найден и в беспорядочном наборе букв. Например, правильный ответ "
Крутой", а даётся ответ "Во
круг све
та". Ясно что буква "т" в ответе никакого отношения к правильному ответу не имеет, и её учитывать не стоит. Поэтому должен существовать некий механизм отбрасывания лишних совпадений. Можно опираться на три подхода:
- Отбрасывать короткие совпадения.
- Отбрасывать совпадения, расположенные слишком далеко от остальных.
- Комбинированный подход: отбрасывать совпадения, расстояние от которых до остальных в определённое число раз превосходит их длину.
В качестве эксперимента можно попробовать следующий метод: отбрасывать одиночные совпадения, рядом с которыми на расстоянии 2-х символов нет больше ни одного совпадения (такие символы, скорее всего, совпали случайно).