[Проект] Акинатор, ама за животни

  1. Идеята ми е да направя леко опростен вариант на Акинатор, който by default да работи за животни: https://en.akinator.com/.

    Играта протича по следния начин: всеки път, когато потребителят си намисли животно, програмата започва да задава въпроси за него. На всеки въпрос потребителят може да отговаря само с “да” или “не”. След всеки един отговор от потребителя програмата може да зададе нов въпрос или да направи директно предположение от типа “Куче ли е?”. В случай, че програмата е отгатнала правилно намисленото животно (т.е. отговорът на предположението е бил положителен), играта приключва и може да бъде започната нова. Ако отговорът е бил отрицателен , то тя е задължена да попита какво е било то, а потребителят е задължен да отговори коректно. След това програмата трябва да зададе няколко допълнителни въпроса, за да „научи“ как може да различава новото животно от това, което е предположила (вж. примера накрая). Тогава програмата трябва да добави новото животно и характеристиките, които е научила за него, в базата със знания. При следващата игра програмата вече ще разполага с по-широк набор от знания – и за различни животни, и за техните характеристики. Допуска се възможността ако програмата не знае какво да попита или отгатне, да се предаде и да помоли потребителя да въведе намисленото животно.

    Ще приемаме, че в началото базата от данни се състои от няколко животни, като например куче, котка, папагал и златна рибка. Тази база, естествено, ще се разширява с течение на времето. Програмата също ще разполага поначало с множество въпроси, отнасящи се до животните. Примерни такива въпроси са “Два крака ли има?”, “Птица ли е?”, “Лети ли?”, “Топлокръвно ли е?” и други, следователно отговорите им могат да бъдат само булеви стойности – конкретно, низовете “да” и “не”. Колкото повече въпроси са имплементирани в началното състояние на програмата, толкова по-умело ще може тя да ги задава и да достига до верен отговор. Базата на знанията ще се съхранява във файл.

    Примерна игра, в която програмата не познава намисленото животно и задава допълнителни въпроси, за да го различи с другите животни. На въпроса “Как мога да различа X и Y?” потребителят е задължен да отговори с въпрос - той може да присъства вече в базата с въпроси, а може и да е чисто нов.

    “Топлокръвно ли е?”

    “да”

    “Птица ли е?”

    “да”

    “Гълъб ли е?”

    “не”

    “Предавам се, какъв е отговорът?”

    “Щраус”

    “Как мога да различа Гълъб и Щраус?”

    “Голямо ли е?”

    “Кое от двете отговаря с “да” на този въпрос?”

    “Щраус”

    “Благодаря, записвам.”

    П.С: Честно казано би работел за всякакъв тип обекти, защото потребителите могат да го обучават както си искат, но все пак.

  2. Добре, не е лошо. Тук ще държим на това интерфейса (в terminal или GUI) да е много удобен за използване.

    Друго условие е знанията да се запазват във времето. Тоест ако днес науча бота какво е крокодил, то утре като го пусна още да може да го разпознае.

Трябва да сте влезли в системата, за да може да отговаряте на теми.