Saya googled "kode 20q" dan menemukan ini: http://mosaic.cnfolio.com/B142LCW2008A197
Versi ini hanya untuk hewan tetapi 20 Pertanyaan yang sebenarnya mungkin memiliki algoritme yang sama.
Berikut ini adalah ikhtisar singkat dari kode yang saya tautkan:
Ada beberapa jawaban berbeda yang dikodekan dengan keras ke dalam program. Beberapa atribut TRUE atau FALSE kemudian ditugaskan kepadanya:
#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"
...
Seperti yang Anda lihat, lebah bukan mamalia tetapi ia terbang, dll.
Ada larik untuk setiap grup:
int mammals[ TOTAL_ANIMALS ] = { 0 };
int flying_animals[ TOTAL_ANIMALS ] = { 0 };
int water_animals[ TOTAL_ANIMALS ] = { 0 };
...
Ketika setiap pertanyaan diajukan:
askUserQuestion( guesses, "\nQuestion %d: Is your animal a mammal? \n", mammals );
Program ini melihat definisi dari kategori yang sesuai dan melacak hewan mana yang paling mungkin Anda pikirkan berdasarkan nilai-nilai BENAR atau SALAH dan Anda menjawab ya atau Tidak yang dimasukkan untuk pertanyaan.
Ini dilakukan di:
void askUserQuestion( int guessNumber, char* question, int* animalData );