「20qコード」をグーグルで検索し、これを見つけました:http : //mosaic.cnfolio.com/B142LCW2008A197
このバージョンは動物専用ですが、実際の20の質問にはおそらく同様のアルゴリズムがあります。
リンクしたコードの概要を以下に示します
。プログラムにハードコードされたいくつかの異なる回答があります。次に、いくつかのTRUEまたはFALSE属性が割り当てられます。
#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"
...
あなたが見ることができるように、蜂は哺乳類ではありませんが、飛ぶなどします。
グループごとに配列があります。
int mammals[ TOTAL_ANIMALS ] = { 0 };
int flying_animals[ TOTAL_ANIMALS ] = { 0 };
int water_animals[ TOTAL_ANIMALS ] = { 0 };
...
各質問が尋ねられるとき:
askUserQuestion( guesses, "\nQuestion %d: Is your animal a mammal? \n", mammals );
プログラムは適切なカテゴリーの定義を見て、TRUEまたはFALSEの値と質問に対する入力されたYesまたはNoの回答に基づいて、あなたが考えている動物である可能性が最も高い動物を追跡します。
これは以下で行われます。
void askUserQuestion( int guessNumber, char* question, int* animalData );