"20q code"를 봤는데 이것을 찾았습니다 : 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 값과 질문에 대한 입력 된 예 또는 아니요 대답을 기반으로 생각할 가능성이 가장 높은 동물을 추적합니다.
이것은 다음에서 수행됩니다.
void askUserQuestion( int guessNumber, char* question, int* animalData );