Ich habe "20q code" gegoogelt und Folgendes gefunden: http://mosaic.cnfolio.com/B142LCW2008A197
Diese Version ist nur für Tiere, aber die eigentlichen 20 Fragen haben wahrscheinlich einen ähnlichen Algorithmus.
Hier ist ein kurzer Überblick über den Code, den ich verlinkt habe:
Es gibt verschiedene Antworten, die im Programm fest programmiert sind. Ihnen werden dann mehrere TRUE- oder FALSE-Attribute zugewiesen:
#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"
...
Wie Sie sehen, ist eine Biene kein Säugetier, sondern fliegt usw.
Für jede Gruppe gibt es ein Array:
int mammals[ TOTAL_ANIMALS ] = { 0 };
int flying_animals[ TOTAL_ANIMALS ] = { 0 };
int water_animals[ TOTAL_ANIMALS ] = { 0 };
...
Wenn jede Frage gestellt wird:
askUserQuestion( guesses, "\nQuestion %d: Is your animal a mammal? \n", mammals );
Das Programm überprüft die Definition der entsprechenden Kategorie und ermittelt anhand der WAHR- oder FALSCH-Werte und der von Ihnen eingegebenen Ja- oder Nein-Antwort auf die Frage, welches Tier am wahrscheinlichsten dasjenige ist, an das Sie denken.
Dies geschieht in:
void askUserQuestion( int guessNumber, char* question, int* animalData );