Jump to content
Che

Akinator

Recommended Posts

mai dal si in rahat de akinator... cum cacat reuseste frate... la primul Traianel Basescianul am zis ok... ca ma luat cu presedinte.. etc... am zis ok, era un raspuns care putea sa fie anticipat... dar si la a 2-a a gicit aladinul din gaoz.. si anume Anda Adam...

:-?@-)

Am mai facut 2 si le-a ghicit si pe alea... si anume Tudor Chirila si Mihaela Radulescu... oricum interesant Aladin asta :)))

Edited by viox
Link to comment
Share on other sites

M-am jucat si eu putin cu el. A gasit-o pe Scarlett Johansson din Avengers relativ repede. Cum cred eu ca functioneaza:

  • din ce am observat intrebarile sunt aceleasi; primele fiind de regula este persoana cautata barbat sau femeie.
  • practic exista doua categorii mari inintiale raportate la sex (masculin sau feminin).
  • pe masura ce se raspunde la intrebari categoriile devin tot mai restranse(specifice) fiecare intrebare determinand integrarea sau nu a persoanei intr-o categorie.
  • am incercat sa raspund in mod arbitrar la intrebari si am observat ca dupa 15 sau 20 de intrebari returneaza un rezultat
  • jocul insa poate continua, aceast lucru insemnand ca fie mai sunt categorii de exploatat(parcurgem setul de valori in adancime) fie am revenit cu un numar de categorii intr-o pozitie anterioara(ne-am deplasat in sens invers). Modul in care se alege numarul de categorii nu poate fi determinat cu exactitate(presupun ca este o valoarea arbitrara intre doua praguri predefinite sau variabile(care depind de natura si numarul raspunsurilor))

Din punctul de vedere al implementarii avem un set de elemente(de ex structuri) cu atribute, legaturi si ponderi ale acestora(ale legaturilor). De exemplu, daca am adapta akinator la RST am putea avea urmatoarele mari categorii:

  1. Este utilizatorul membru RST(exemplul este redundant insa serveste ca si punct de plecare)
  2. Este utilizatorul obisnuit(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  3. Este utilizatorul VIP(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  4. Este utilizatorul Moderator(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  5. Este utilizatorul Super Moderator(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  6. Are utilizatorul mai mult de N post-uri(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  7. Are utilizatorul mai mult de M rep(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  8. Are utilizatorul mai mult de P(zile/luni/ani) vechime(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  9. Are utilizatorul mai mult de N' vizite la profil(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  10. Are utilizatorul mai mult de M' mesaje lasate pe profil(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  11. Are utilizatorul mai mult de P' mesaje in inbox (da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  12. Are utilizatorul mai mult de N'' mesaje trimise(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  13. Are utilizatorul mai mult de M'' mesaje primite(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  14. Are utilizatorul mai mult de P'' like-uri primite(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  15. Are utlizatorul utilizatorul mai mult de M''' like-uri date(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  16. Are utilizatorul mai mult de N''' warn-uri primite(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  17. Are utilizatorul mai mult de P''' ban-uri primite(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  18. A dat utilizatorul mai mult de N'''' warn-uri(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  19. A dat utilizatorul mai mult de N'''' ban-uri(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  20. Are utilizatorul avatar-ul setat?(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  21. De cate ori l-a schimbat?(da/nu/poate/mai mult da decat nu/mai mult nu decat da)
  22. Are mai multe de N post-uri cu M like-uri si P rep-uri

Fiecare intrebare isi gaseste raspunsul intr-un atribut al unui element al unei multimi. De exemplu multimea in cazul de mai sus este comunitatea RST(membrii acesteia mai exact) iar elementele acesteia sunt membrii reprezentati printr-o structura asemanatoare(imi exersez putin C-ul):


struct Membru {
int eMembru = 1; // poate fi 1 sau 0 1 fiind valoarea de baza(default). e vine de la este aici
int scaraMembru; // aceasta valoarea arata cat "de membru" este un utilizator(observam ca akinator nu este gandit in valori
// absolute de unde si termeni ca poate si nu sunt sigur in variantele pentru raspuns. Mai mult ca sigur se
// foloseste de concepte de logica [B][COLOR="#FF0000"]fuzzy[/COLOR][/B]. Scara poate fi de la 1 la 5 spre exemplu(in cazul nostru acestea acopera intreaga plaja de valori)
int eObisnuit = 1; // toti membrii sunt cel putin obisnuiti(VIP, Moderator si Super Moderator)
int scaraObisnuit; // cat de obisnuit este sau in ce masura credem ca este obisnuit
int eVip = 1; // membrii VIP sunt mai putini decat cei obisnuiti dar mai putini ca si moderatorii si super moderatorii
int scaraVip; // cat de Vip este sau in ce masura credem ca este Vip
int eModerator;
int scaraModerator;
int eSuperModerator;
int scaraSuperModerator;
...
// procesul este analog(asemanator) si pentru celelalte atribute
};

Acum presupunem ca populam fiecare camp al fiecarui element al multimii cu valori predefinite(extrase fie din surse publice(wikipedia) sau private(gestiunea populatiei, SRI, etc.).

Presupunem ca avem urmatoarele elemente(sunt luate in mod arbitrar neaand menirea a reflecta vreo situatie concreta):

@Ganav{ 
eMembru = 1;
scaraMembru; // aceasta valoarea este atribuita de catre jucator
eVip = 1;
scaraVip; // scarile sunt populate in timpul jocului
eModerator = 0;
scaraModerator;
eSuperModerator = 0;
...
// ignoram celelalte intrari
};

Nytro{
eMembru = 1;
scaraMembru; // aceasta valoarea este atribuita de catre jucator
eVip = 1;
scaraVip; // scarile sunt populate in timpul jocului
eModerator = 1;
scaraModerator;
eSuperModerator = 1; // este membru, Vip, moderator si super moderator
...
// ignoram celelalte intrari
};

aelius{
eMembru = 1;
scaraMembru; // aceasta valoarea este atribuita de catre jucator
eVip = 1;
scaraVip; // scarile sunt populate in timpul jocului
eModerator = 1;
scaraModerator;
eSuperModerator = 1; // este membru, Vip, moderator si super moderator
...
// ignoram celelalte intrari
};

rukov{
eMembru = 1;
scaraMembru; // aceasta valoarea este atribuita de catre jucator
eVip = 1;
scaraVip; // scarile sunt populate in timpul jocului
eModerator = 0;
scaraModerator;
eSuperModerator = 0; // este membru, Vip insa nu este moderator sau super moderator
...
// ignoram celelalte intrari
};

vHaker{
eMembru = 1;
scaraMembru; // aceasta valoarea este atribuita de catre jucator
eVip = 0;
scaraVip; // scarile sunt populate in timpul jocului
eModerator = 0;
scaraModerator;
eSuperModerator = 0; // nu este membru, Vip, moderator si super moderator
...
// ignoram celelalte intrari
};

kaokao{
eMembru = 0; // [COLOR="#FF0000"]punem 0 deoarece a luat ban in urma cu cateva zile(frauda, spam, metin, etc.)[/COLOR]
scaraMembru; // aceasta valoarea este atribuita de catre jucator
eVip = 0;
scaraVip; // scarile sunt populate in timpul jocului
eModerator = 0;
scaraModerator;
eSuperModerator = 0; // nu este membru, Vip, moderator si super moderator
...
// ignoram celelalte intrari
};

Acum avem urmatoarele categorii(acestea sunt prezentate in ordinea descrescatoare a numarului de membrii):

  1. 1 utilizatori care nu mai sunt membrii: kaokao
  2. 2 cei care inca sunt membrii:Ganav, Nytro, aelius, rukov, vHaker
  3. 3 cei care sunt Vip: Ganav, Nytro, aelius, rukov
  4. 4 cei care nu sunt Vip: vHaker
  5. 5 cei care sunt moderatori: Nytro, aelius
  6. 6 cei care nu sunt moderatori: Ganav, rukov, vHaker
  7. 7 cei care sunt super moderatori: Nytro, aelius
  8. 8 cei care nu sunt super moderatori: Ganav, rukov, vHaker
  9. ... procesul este asemanator si pentru celealte categorii

Acum vom simula o secventa de joc:

  1. Avem starea initiala, valoarea scarilor nu este completata in acest punct al jocului. Urmeaza intrebarile:
    Este membru RST?
    Raspundem DA cu certitudine maxima.
  2. Acum categoria s-a restrans(nu il mai avem pe kaokao care a luat ban). Urmatoarea intrebare:
    Este membrul Vip?
    Raspundem cu DA cu certitudine maxima.
  3. Acum categoria s-a restrans din nou(Ganav, Nytro, aelius, rukov). Urmatoarea intrebare:
    Este membrul moderator?
    Raspundem cu DA cu certitudinea maxima.
  4. Acum categoria s-a restrans din nou(Nytro, aelius). Urmatoarea intrebare:
    Este membrul super moderator?
    Raspundem cu DA cu certitudinea maxima.
  5. Acum categoria nu s-a restrans deoarece ambii membrii sunt si moderatori si super moderatori (Nytro, aelius). Urmatoarea intrebare:
    Are membrul mai mult de 10000 de post-uri?
    Raspundem cu DA cu certitudinea maxima.
  6. Jocul este gata si se afiseaza Nytro.

Nu am folosit celelalte valori(poate, mai mult nu decat da, mai mult nu decat da) deoarece necesita crearea unui model euristic care la randul sa necesita explicatii adiacente. In fine un tutorial destul de bun referitor la logica fuzzy se gaseste aici:

Fuzzy Logic - VideoLectures.NET

Edited by Ganav
  • Upvote 1
Link to comment
Share on other sites

@Aerosol ... ne-am dat dracu, sti tu chestia asta ? daca peste 1 an castig la 6/46 marele premiu , nici atuncea nu o sa devin o persoana publica ? Sau daca se indragosteste nu stiu ce printesa lu' peste de mine , oare atuncea o sa devin ?

Esti cumva Tata Omida ? Tu prevezi viitorul ? Ai boabele de fasole la tine ca ti-as trimite niste btc sa imi citesti maine viitorul , ca trebuie sa ma trezesc de dimineata si am destula treaba si nu stiu cu ce sa incep , astept pm !

  • Upvote 1
Link to comment
Share on other sites

@Aerosol ... ne-am dat dracu, sti tu chestia asta ? daca peste 1 an castig la 6/46 marele premiu , nici atuncea nu o sa devin o persoana publica ? Sau daca se indragosteste nu stiu ce printesa lu' peste de mine , oare atuncea o sa devin ?

Esti cumva Tata Omida ? Tu prevezi viitorul ? Ai boabele de fasole la tine ca ti-as trimite niste btc sa imi citesti maine viitorul , ca trebuie sa ma trezesc de dimineata si am destula treaba si nu stiu cu ce sa incep , astept pm !

Coaie atat mai zic si hai sa terminam cu offtopic-ul ca nu are rost..

chiar daca castigi la loto nu vei ajunge persoana publica... sunt oameni care au castigat la loto si nici dracu'

nu stie de ei :|

sunt mai mari sanse ca o broasca sa reguleaze un iepure de camp decat sa te cuplezi tu cu o printesa :)) (Exceptand taganii)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...