Сап,Реахтур.Знаю здесь много талантливых тыжпрограммистов,которым я хочу задать вопрос:насколько сложен механизм/алгоритм "Акинатора"?
Насколько квалифицированным надо быть чтобы написать эту программу,насколько это сложно?
Очень надеюсь на ваши советы.
Насколько квалифицированным надо быть чтобы написать эту программу,насколько это сложно?
Очень надеюсь на ваши советы.
Подробнее
помощь,совет,акинатор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,программирование,песочница
Еще на тему
Все же "сапера" написать немного сложнее!
Вот здесь (книга 1991 года) есть программа игры "Животные" на Бейсике - фактически тот же Акинатор (страница 65).
Нужно еще погуглить "игра Животные".
http://www.sql.ru/forum/946301/igra-ugaday-zhivotnoe-ispolzuya-principy-oop-v-delphi-pomogite-pozhaluysta
И возможность пополнять базу.
1. Тут все пишут про базу знаний, но зыбывают про базу вопросов. Это первое что я бы подготовил. Вопросы типа: Это реалньный персонаж? Это мужчина? Старше 25. и т.п.
2. Создал бы БД. с полями isReal, isMan, isOlder25 и т.п.
3. Выводим вопрос: Это реальный персонаж? По результату делаем запрос в базу. Получаем пустой сет, но пока продолжаем задавать вопросы, допустим, если сет пустой задаем 5 вопросов. После того как задали эти 5 вопросов пишем "Я сдаюсь, напиши что это за персонаж". Запомненные вопросы и имя персонажа вносим в нашу базу.
4. Если вернулось больше одной записи, продолжаем задавать вопросы, пока не вернется 1 запись. Как только запись будет 1 выводим имя перса. И спрашиваем у пользака правильно ли мы угадали или нет. Если да - конец. Если нет, предлагаем ввесити имя перса (пополняем базу)
как-то так.
Другой вопрос что у акинатора есть огромная база данных. Непонятно как ее формировать вначале....
Так что скорее таблицы вида
id_вопроса; текст вопроса
id_персонажа; название
id_вопроса; id_персонажа; число ответивших "Да"; число ответивших "нет"
некромантнекропостер хренов :-)Пришла идея алгоритма на подобии Акинатора,но который не персонажей угадывает,а сможет поставить диагноз,пусть и примерно(а возможно и намного точнее нынешних врачей) и уж точно лучше интернет оветчиков типа на мейл.ру
Сам фармацевт,но как прогер кодер-я профан
Но есть и немалое число недостатков (в основном - связанных с нестандартными ситуациями). Так что поточнее основной массы советчиков, но рекомендации "вали к врачу" не отменяет (хотя, я так думаю - об этом и речи е было :-) )
Игра не моя, переписывал на GWBasic по памяти из "Науки и жизни". Претендует на звание самой короткой. Играть лучше толпой. В институте даже как-то втюхал ее под видом экспертной системы. Может использоваться при построении БД для уточнения критериев классификации сущностей:
Код:
10 OPTION BASE 1: DIM D$(1025): D$(1)="ЭТО КОТ": I=1: ON ERROR GOTO 80
20 PRINT D$(I);: INPUT O$: O$=LEFT$(O$,1)
30 IF I"" GOTO 70
40 IF O$="Д" OR O$="д" THEN PRINT "УРРА-А!": I=1: GOTO 20
50 D$(I*2+1)=D$(I): INPUT "А КТО ЭТО";O$: D$(I*2)="ЭТО "+O$
60 INPUT "ЧЕМ ОТЛИЧАЕТСЯ";D$(I): I=1: GOTO 20
70 IF O$="Д" OR O$="д" THEN I=I*2: GOTO 20: ELSE I=I*2+1: GOTO 20
80 PRINT "НЕ ХВАТАЕТ МОЗГОВ!": END
Представь, что тебе надо идентифицировать всех людей на планете, не давая им при этом уникальные идентификационные номера (как в паспортах). И теперь вместо того, чтобы говорить гос. службам свой номер паспорта, ты диктуешь им кучу своих биометрических параметров: цвет глаз, рост, вес, возраст, длину волос, размер носа, толщину губ, расстояние между бровями, угол линии лба... (предположим, что при изменении параметра надо его "перерегистрировать" на паспортном столе) На самом деле, такой подход за вычетом его адовой сложности был бы рабочим, что легко понять: хрен ты найдешь людей с одинаковой внешностью (не считая близнецов). Примерно так и устроен их алгоритм: если это не один и тот же персонаж, а два разных, то они хоть чем-то да отличаются друг от друга, поэтому при хорошем наборе данных не нужно никаких умных механизмов, чтобы это вычислить.
Это не сложно, смотри: "Саша, Маша играли на полу. Саша Маше..."
И так далее.
просто посмотри короткие примеры вокруг
игра просто задает вопросы, ответ на которые дает то или иное направление.
и вопросы и ответы дают сами игроки.
изначально можно вообще вписать в БД один ответ
игра("животные", например) будет спрашивать "это собака?"
скорее всего играющий загадал не собаку,
поэтому игра спросит что он загадал ("дельфина")
и спросит, как отличить собаку от дельфина - ("живет в море")
отлично, теперь у игры есть один вопрос "это животной живет в море?" и два варианта - для "да" и для "нет"
т.е. следующий игрок загадавший и ответивший - добавит вопрос для ветки "да" или "нет", и так далее ...
понятное дело что можно усложнить, и можно отмодерировать чтобы игроки не врали, но суть игры очень проста.
Помогите, "тыж программисты", уменьшить уровень моей безграмотности.
Я так это вижу:
1) БД - 3 таблицы: персонажи (2 поля id и имя), свойства (2 поля id, связаный вопрос), связи (3 поля id, id персонажа, id свойства).
Свзаные вопросы должны быть построены так что бы ответ был ди или нет.
2) Алгоритм: сортирум связи по количеству свойств (задаем связаный вопрос). На основании ответа расширяем фильтр поиска (ищем по id). Производим поиск по составному фильтру по id до тех пор пока id персонажа не будет уникальным. Уникальный id и даст имя персонажа. Если фильтр содержит скажем 15 значений сдаемся и просим назвать персонажа - результат заносим в таблицу персонажей, а набор фильтров в таблицу связей. Вот и все.
3) Исходные данные, на самом деле главный гемор это набор свойств тем не менее 100 параметров будет более чем достаточно. Ну и 2 - 3 персонажа и связей предустановить.
Шарим в web и через некоторое время БД будет наполнена данными от самих пользователей.
эта игра еще и один из первых вирусов)