Форум СИ  

Вернуться   Форум СИ > Интеллектуальные игры в миру и сети > Игровая арена

Ответ
 
Опции темы Опции просмотра
Старый 30.12.2006, 22:27   #31
anatbel
Командор
 
Аватар для anatbel
 
Регистрация: 07.04.2006
Сообщения: 759
Поблагодарил(а): 117
Поблагодарили 1,100 раз(а) в 320 сообщениях
По умолчанию

Цитата:
Сообщение от Ur-Quan
В общем-то, идея здравая. Не настолько же всё плохо, чтобы применять кнопку каждый раз
Еще раз повторяю: каждый играет для себя.
Хочется ему хоть каждый ответ себе зачесть - да на здоровье.
Кому это мешает?

А тот, кто хочет реально себя оценивать, - и так злоупотреблять не будет.
anatbel вне форума   Ответить с цитированием
Старый 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 вне форума   Ответить с цитированием
Старый 30.01.2007, 10:17   #33
Ur-Quan
Senior Member
 
Аватар для Ur-Quan
 
Регистрация: 06.04.2006
Адрес: Москва
Сообщения: 258
Поблагодарил(а): 19
Поблагодарили 30 раз(а) в 13 сообщениях
Отправить сообщение для  Ur-Quan с помощью ICQ
По умолчанию Не только о числах

Продолжаем, если это кому-нибудь интересно Может, подскажете чего-нибудь ещё

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

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

Последний раз редактировалось Ur-Quan, 01.02.2007 в 19:52
Ur-Quan вне форума   Ответить с цитированием
Старый 30.01.2007, 14:24   #34
Nikolaev N.
Любитель
 
Регистрация: 06.04.2006
Адрес: Брянск
Сообщения: 1,541
Поблагодарил(а): 2,947
Поблагодарили 517 раз(а) в 277 сообщениях
По умолчанию

Цитата:
Сообщение от Ur-Quan
Продолжаем, если это кому-нибудь интересно Может, подскажете чего-нибудь ещё
С вариантами ответов получатся, например:
Алексей Николаевич Толстой, А.Н. Толстой, А. Н. Толстой, Ал-й Николаевич Толстой, Алексей Ник. Толстой, Алексей Н. Толстой, Ал-й Ник. Толстой, Толстой Алексей Николаевич, Толстой А.Н., Толстой А. Н., Толстой Ал-й Николаевич, Толстой Алексей Ник. и т.д.

И все – правильные?
__________________
Всё, что не делается - не делается к лучшему.
Nikolaev N. вне форума   Ответить с цитированием
Старый 30.01.2007, 19:41   #35
Ur-Quan
Senior Member
 
Аватар для Ur-Quan
 
Регистрация: 06.04.2006
Адрес: Москва
Сообщения: 258
Поблагодарил(а): 19
Поблагодарили 30 раз(а) в 13 сообщениях
Отправить сообщение для  Ur-Quan с помощью ICQ
По умолчанию

Цитата:
Сообщение от Nikolaev N.
С вариантами ответов получатся, например:
Алексей Николаевич Толстой, А.Н. Толстой, А. Н. Толстой, Ал-й Николаевич Толстой, Алексей Ник. Толстой, Алексей Н. Толстой, Ал-й Ник. Толстой, Толстой Алексей Николаевич, Толстой А.Н., Толстой А. Н., Толстой Ал-й Николаевич, Толстой Алексей Ник. и т.д.

И все – правильные?
В большинстве своём они будут считаться правильными. Вот с перестановками слов не всё так гладко.
Но вообще, существует же общеприянтая форма "А.Н. Толстой"; в крайнем случае, можно предусмотреть засчитывание только её
__________________
"О друг мой, Аркадий Николаич! Об одном прошу тебя: не говори красиво."
Ur-Quan вне форума   Ответить с цитированием
Старый 01.02.2007, 19:50   #36
Ur-Quan
Senior Member
 
Аватар для Ur-Quan
 
Регистрация: 06.04.2006
Адрес: Москва
Сообщения: 258
Поблагодарил(а): 19
Поблагодарили 30 раз(а) в 13 сообщениях
Отправить сообщение для  Ur-Quan с помощью ICQ
По умолчанию На тему Алексеев Николаевичей :)

Ранее в игре использовались метасимволы, чтобы записать большое число вариантов ответа. Например, "Орлов*" означало и "Орлов", и "Орлова", и "Орловский". Но в связи с использованием новых критериев зачёта эти метасимволы больше не нужны.
Будет только одна конструкция, указывающая, что некоторые слова в ответе идут в произвольном порядке. Это фигурные скобки. В случае с А.Н. Толстым правильный ответ лучше всего записать в форме "{А.Н.} {Толстой}". Такая запись как раз и означает, что "А.Н." и "Толстой" могут идти в ответе игрока в любой последовательности, но желательно присутствие обеих компонент.
Разберём теперь важный пример. Пусть в ответе нужно указать 3 части света, и авторский ответ таков: "{Азия}, {Африка} и {Европа}". Игрок же отвечает "Европа, Азия, Африка". Как проверить правильность ответа?
Можно попробовать перебрать в авторском ответе все возможные комбинации частей света (получится шесть вариантов) и сравнить ответ игрока с каждой из них. При этом совпадение хотя бы с одним из вариантов ведёт к зачёту ответа. Но это достаточно утомительный подход. Думаю, что можно поступить гораздо более эффективным образом.
Можно сначала попытаться отыскать отдельные элементы (части света) в ответе игрока и определить, который из них встречается раньше остальных, какой - чуть позже, а какой - самым последним. Это и обеспечит выбор единственного варианта авторского ответа, который и будет использоваться при проверке правильности ответа игрока.
__________________
"О друг мой, Аркадий Николаич! Об одном прошу тебя: не говори красиво."
Ur-Quan вне форума   Ответить с цитированием
Старый 01.02.2007, 20:01   #37
grzegorz
Senior Member
 
Регистрация: 06.04.2006
Сообщения: 352
Поблагодарил(а): 1
Поблагодарили 106 раз(а) в 48 сообщениях
Отправить сообщение для  grzegorz с помощью ICQ
По умолчанию

Боюсь ломиться в открытые ворота. Может, стоит использовать модификации расстояния Левенштейна?
grzegorz вне форума   Ответить с цитированием
Старый 02.02.2007, 17:45   #38
Ur-Quan
Senior Member
 
Аватар для Ur-Quan
 
Регистрация: 06.04.2006
Адрес: Москва
Сообщения: 258
Поблагодарил(а): 19
Поблагодарили 30 раз(а) в 13 сообщениях
Отправить сообщение для  Ur-Quan с помощью ICQ
По умолчанию

Григорий, почитав про это, понял, что почти это и использую
Просто всё сведено не к трудоёмкому поиску числа операций для замены и удаления, а к поиску наибольшей общей подпоследовательности.
__________________
"О друг мой, Аркадий Николаич! Об одном прошу тебя: не говори красиво."
Ur-Quan вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Часовой пояс GMT +3, время: 07:45.


vBulletin v3.8.12 by vBS, Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co