Problem #306
Author:IOAI Committee
Difficulty
Your best score
N/A
In the seventeenth century, John Wilkins attempted to construct a perfect language: the name of a thing was supposed to reveal its place within a classification built from YES/NO distinctions.
The project was abandoned, but an unknown clerk continued collecting animals inside an enormous Cabinet of Distinctions. Each drawer hides a creature. The labels have been lost, and the brass grid on each drawer responds only to binary questions about the animal inside.
The following records have survived from the archive:
animals_pool.txt — the 250 animals that may appear in the Cabinet;questions_pool.csv — the 280 allowed questions;oracle_table.csv — the frozen oracle responses for every (animal, question) pair.You must construct an adaptive policy that identifies the animal using as few calls as possible.
In the interactive version, the program would successively call:
interactor.ask(question) # -> "yes" / "no"interactor.guess(animal) # -> "correct" / "wrong"In the current version, however, the platform does not run a real-time interactor. Therefore, you must submit the decision tree that your program would execute. The evaluator starts from node 0, consults the private oracle, and follows the corresponding branch for each answer.
The tree may actually be a directed graph: multiple branches may lead to the same node. Cycles are not useful because every node visit consumes one call, and the budget is strict.
animals_pool.txtOne animal name per line. Only these names may be guessed.
questions_pool.csv| Column | Meaning |
|---|---|
question_id | identifier of the form Q0001 |
question | the question text |
kind | semantic or lexical |
Semantic questions describe biological or ecological properties. Lexical questions describe the English name preserved in the catalogue. Both types are valid Cabinet questions.
oracle_table.csv| Column | Meaning |
|---|---|
animal | the candidate animal |
responses | binary string following the order from questions_pool.csv |
The character at position i is the oracle’s answer to the question on row i:
1 = yes;0 = no.The oracle is deterministic and frozen. The table represents its beliefs rather than a perfect zoological knowledge base, so some answers may be debatable. The solution must optimize the policy for the actual responses stored in the table.
Upload an archive with the following structure:
submission.zip└── submission.csvsubmission.csv must be located at the root of the archive. The archive must not contain any other files.
The CSV file must contain exactly the following columns:
id,subtaskID,answerid — unique numeric identifier of the node;subtaskID — always 1;answer — description of the node.The root node must have id = 0.
Do not upload
submission.csvdirectly. The platform must receive thesubmission.ziparchive.
Q|question_id|yes_node|no_nodeExample:
0,1,Q|Q0001|1|2If the answer to Q0001 is yes, the evaluator continues to node 1; otherwise, it continues to node 2.
G|animal|wrong_nodeExample:
1,1,G|agouti|3The evaluator asks, “Is the animal agouti?” If the guess is correct, the case ends. If the guess is wrong, evaluation continues at node 3.
The special value END means that the policy gives up:
2,1,G|alligator gar|ENDBecause the
answerfield contains the|character, no special CSV escaping is required. Animal names do not contain|.
For each hidden animal, at most 15 calls are allowed.
Every visited node consumes exactly one call:
Q node consumes one call;G node consumes one call, regardless of whether the guess is correct or wrong.After the 15th call, the case ends automatically.
For each animal:
score_case = max(0, (1 if guessed correctly, otherwise 0) - 0.02 × calls_used)Examples:
0.98;0.90;0.70;0.The final score is:
100 × mean(score_case)The theoretical maximum score is 98, because even an immediate correct guess consumes one call.
20,000 nodes;0 must exist;question_id must exist in questions_pool.csv;animals_pool.txt in order to be correct;submission.csv.Contents of submission.csv:
id,subtaskID,answer0,1,Q|Q0001|1|21,1,G|agouti|END2,1,G|alligator gar|ENDThis policy asks a single question and then makes a single guess. It will solve only the cases in which the two leaves match the hidden animal.
log2(250) ≈ 7.97. In an ideal tree, approximately eight binary answers would be enough to distinguish among the 250 animals, but the available questions do not always divide the candidate set perfectly in half.
A useful strategy is to:
yes and no branches;The problem is an ONIA adaptation of the notebook Home Task 3 — The Analytical Language of John Wilkins, published in the IOAI 2026 repository. The LLM-based interactor was replaced with a frozen oracle so that evaluation remains fast and deterministic.