Показать сообщение отдельно
Старый 16.01.2007, 10:53   #32
Ur-Quan
Senior Member
 
Аватар для Ur-Quan
 
Регистрация: 06.04.2006
Адрес: Москва
Сообщения: 258
Поблагодарил(а): 19
Поблагодарили 30 раз(а) в 13 сообщениях
Отправить сообщение для  Ur-Quan с помощью ICQ
Smile И волки сыты...

Пришла мне в голову одна весьма интересная мысль.
Размышления были следующими: сделаешь зачёт ответов пожёстче - сразу будут жаловаться на незачёт падежных форм; сделаешь зачёт помягче - будут сетовать на то, что программа всякую ерунду принимает.
И вот какое придумалось улучшение: необходимо уделять больше внимания совпадениям в начале слов, нежели в конце. Связано это с естественным строением русского языка: если два слова отличаются лишь ближе к концу, то, скорее всего, это две формы одного и того же слова.
Только, разумеется, старый зачёт надо тоже сохранить в силе, т.е. при опечатке в первых буквах слова всё равно ответ должен засчитываться. Просто при приближении к концу слов образца (авторского ответа) зачёт становится либеральнее.
Поскольку количество слов в авторском ответе и ответе игрока в общем случае различается, то сравнивать по-прежнему нужно строки, а не слова. Однако изменения коснутся вот чего.
Раньше за каждый совпадающий символ общей подпоследовательности начислялось 1 очко. Число набранных очков и составляло длину этой подпоследовательности. Затем это число делилось на длину образца, и делался вывод о том, можно ли принимать.
Теперь за каждую совпавшую букву будет даваться разное число очков в зависимости от её позиции в авторском ответе. Возможны два подхода (на примере "Медного всадника"):
1.
Код:
Строка:             М е д н ы й  в с а д н и к
Очки за совпадение: 6 5 4 3 2 1  7 6 5 4 3 2 1
2.
Код:
Строка:             М  е   д   н   ы   й    в  с   а   д   н   и   к
Очки за совпадение: 1 5/6 4/6 3/6 2/6 1/6   1 6/7 5/7 4/7 3/7 2/7 1/7
Все очки, полученные за совпадения, суммируются. Затем определяется максимально возможное число очков. После этого первое делится на второе и снова сравнивается с допустимой мерой совпадения. Как видите, совпадения в начале слов теперь играют бОльшую роль. Пробелы, как всегда, в сравнении не участвуют.
Какой из подходов лучше - насчёт этого надо подумать. Мне более симпатичен первый, ведь в нём уменьшается роль маленьких слов. например, во втором подходе за совпадения первых букв в словах "и" и "медный" даёт одинаковое число очков - 1, хотя первое слово вроде поценнее будет. Впрочем, надо ещё подумать: ведь первый подход при этом будет требовать и более точного совпадения с длинными словами.
__________________
"О друг мой, Аркадий Николаич! Об одном прошу тебя: не говори красиво."
Ur-Quan вне форума   Ответить с цитированием