J'ai googlé "code 20q" et trouvé ceci: http://mosaic.cnfolio.com/B142LCW2008A197
Cette version est uniquement pour les animaux, mais les 20 questions actuelles ont probablement un algorithme similaire.
Voici un aperçu rapide du code que j'ai lié:
Il existe plusieurs réponses codées en dur dans le programme. Plusieurs attributs TRUE ou FALSE leur sont alors attribués:
#define ANIMALS_LIST "daddylonglegs bee penguin eagle giraffe octopus tiger elephant jellyfish bull \nparrot dolphin python crocodile cat leopard monkey zebra sheep rat \nowl spider frog polarbear snail tortoise rabbit salmon rhino fox"
#define MAMMALS "0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 1"
#define FLYING_ANIMALS "1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
#define WATER_ANIMALS "0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0"
#define BEAK "0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0"
...
Comme vous pouvez le voir, une abeille n'est pas un mammifère mais elle vole, etc.
Il y a un tableau pour chaque groupe:
int mammals[ TOTAL_ANIMALS ] = { 0 };
int flying_animals[ TOTAL_ANIMALS ] = { 0 };
int water_animals[ TOTAL_ANIMALS ] = { 0 };
...
Lorsque chaque question est posée:
askUserQuestion( guesses, "\nQuestion %d: Is your animal a mammal? \n", mammals );
Le programme examine la définition de la catégorie appropriée et suit quel animal est probablement celui auquel vous pensez en fonction des valeurs VRAI ou FAUX et de votre réponse Oui ou Non à la question.
Cela se fait en:
void askUserQuestion( int guessNumber, char* question, int* animalData );