Artigo
· 4 hr atrás 4min de leitura

Senhoras e senhores, o incrível Iris-nator

   

O incrível Iris-nator chegou à cidade. Ele sabe o que você pensa, com apenas algumas perguntas ele é capaz de adivinhar o personagem em que você pensou. Você se atreve?

Alguns de vocês podem conhecer o jogo Akinator, onde um gênio é capaz de adivinhar o personagem em que você pensou, enquanto você responde “sim” ou “não” a uma pergunta simples.

Sem IA analisando suas redes sociais, sem microfones escutando... Então, como ele faz isso?

O segredo é um algoritmo simples e muitas pessoas jogando e alimentando o banco de dados.

Como funciona?

Vamos definir um termo: Nó.

Um nó pode ser uma pergunta ou o nome do personagem.

Se for uma pergunta, terá duas respostas: Sim ou Não.

 

Agora vamos dar um valor a ele.

À pergunta daremos o Id 1, à resposta afirmativa, daremos o Id 2 e à resposta negativa, o Id 3.

Agora vamos imaginar que ambas as respostas afirmativa e negativa retornam outra pergunta, com os personagens correspondentes para “sim” e “não”.

 

Podemos ver um padrão entre as perguntas e as respostas.

Respostas afirmativas são o dobro do identificador da pergunta, e respostas negativas são o dobro do identificador da pergunta mais um.

Então, se temos o nó n, o próximo nó a ser exibido será o nó n×2 se a resposta for "sim" ou o nó (n×2)+1 se a resposta for "não".

Vamos dar um exemplo:

 

Suponha que eu pense no Snoopy, e a pergunta seja "Seu personagem é fictício?", a resposta "sim" nos dirá que o personagem em que pensamos é o "Superman", mas não está correto.

Como transformamos nossa resposta em uma pergunta que nos leva ao Snoopy?

Precisamos de uma característica que nos diferencie do Superman, neste caso perguntaremos "Seu personagem é um cachorro?", então, a resposta afirmativa seria "Snoopy" e a resposta negativa seria "Superman".

Esta nova pergunta substituirá o Id do nó "Superman", o personagem "Snoopy" terá o dobro do nó da nova pergunta e o personagem "Superman" terá o dobro do nó da nova pergunta mais um.

 

Dessa forma, se criarmos muitas perguntas e respostas, nosso Iris-nator será capaz de adivinhar qualquer personagem em que você pensou.

Como o Iris-nator funciona?

Crie uma tabela com informações dos nós:

Class Irisnator.Data.Nodes Extends %Persistent
{

/// NodeId
Property NodeId As %Numeric;
/// Texto do nó
Property Text As %String(MAXLEN = "");
/// Ttipo do nó (0 = texto, 1 = pergunta)
Property Question As %Boolean [ InitialExpression = 0 ];
/// Verbo da pergunta
Property Verb As %String(MAXLEN = "");
}

Observação: Por que existe um campo chamado "verbo"? Porque a pergunta é mostrada como {verbo} seu personagem {texto}? Portanto, é necessário saber qual é o verbo (é, tinha, faz, etc...).

O front-end foi criado com Angular 19. Para se comunicar com o IRIS, criei vários métodos de API:

GET localhost:52773/irisnator/api/node/:nodeId

Retorna as informações sobre o nó, e também o NodId para as respostas Sim e Não.

{
    "nodeId": 1,
    "text": "a woman",
    "verb": "is",
    "question": true,
    "nodeYes": 2,
    "nodeNo": 3
}

GET localhost:52773/irisnator/api/score/:top

Retorna a pontuação máxima. Essa pontuação máxima é o número de vezes que um personagem foi acertado.

{
    "score": [
        {
            "characterName": "Spiderman",
            "score": 8
        },
        {
            "characterName": "Maddona",
            "score": 3
        },
        {
            "characterName": "Snoopy",
            "score": 1
        }
    ]
}

POST localhost:52773/irisnator/api/node

Quando o Iris-nator não consegue adivinhar seu personagem, preenchemos um formulário com os dados do novo personagem e qual seria a pergunta a fazer para diferenciá-lo do personagem a que ele chegou.

Então, movemos o personagem atual para a resposta "não" e colocamos o ID na nova pergunta.

{
    "nodeId": 507,
    "newCharacter": "Snoopy",
    "oldCharacter": "Bugs Bunny",
    "text": "a dog",
    "verb": "is"
}

Além disso, ele adicionará Snoopy como um personagem que ele não conseguiu adivinhar.

POST localhost:52773/irisnator/api/score

Este método define a pontuação de um personagem, se foi um sucesso ou não.

{
    "characterName": "Snoopy",
    "success": true
}

 

Você pode assistir ao seguinte vídeo de como o aplicativo funciona, aproveite!!!

https://www.youtube.com/embed/v5GsiXJDgC8
[Isso é um link incorporado, mas você não pode ver conteúdo incorporado diretamente no site, porque recusou os cookies necessários para acessá-lo. Para ver o conteúdo incorporado, você precisa aceitar todos os cookies nas suas Definições de cookies]

Discussão (0)1
Entre ou crie uma conta para continuar