Oppgave #306
Forfatter:IOAI Committee
Vanskelighetsgrad
Din beste poengsum
N/A
I det syttende århundret forsøkte John Wilkins å konstruere et fullkomment språk: Navnet på en ting skulle avsløre dens plass i en klassifikasjon bygget opp av YES/NO-distinksjoner.
Prosjektet ble oppgitt, men en ukjent skriver fortsatte å samle dyr i et enormt Distinksjonenes kabinett. Hver skuff skjuler en skapning. Etikettene har gått tapt, og messinggitteret på hver skuff besvarer bare binære spørsmål om animal inni.
Følgende opptegnelser har overlevd fra arkivet:
animals_pool.txt — de 250 dyrene som kan forekomme i kabinettet;questions_pool.csv — de 280 tillatte spørsmålene;oracle_table.csv — de frosne orakel-responses for hvert (animal, question)-par.Dere må utforme en adaptiv policy som identifiserer animal med så få kall som mulig.
I den interaktive versjonen ville programmet etter tur kalle:
interactor.ask(question) # -> "yes" / "no"interactor.guess(animal) # -> "correct" / "wrong"I den nåværende versjonen kjører plattformen imidlertid ikke en interaktor i sanntid. Derfor må dere sende inn beslutningstreet som programmet deres ville utføre. Evaluereren starter ved node 0, konsulterer det private orakelet og følger den tilsvarende grenen for hvert answer.
Treet kan faktisk være en rettet graf: Flere grener kan føre til den samme noden. Sykler er ikke nyttige, fordi hvert besøk i en node forbruker ett kall, og budsjettet er strengt.
animals_pool.txtEtt animal navn per linje. Bare disse navnene kan gjettes.
questions_pool.csv| Kolonne | Betydning |
|---|---|
question_id | identifikator på formen Q0001 |
question | question-teksten |
kind | semantic eller lexical |
Semantiske spørsmål beskriver biologiske eller økologiske egenskaper. Leksikalske spørsmål beskriver det engelske navnet som er bevart i katalogen. Begge typer er gyldige spørsmål i kabinettet.
oracle_table.csv| Kolonne | Betydning |
|---|---|
animal | kandidat-animal |
responses | binær streng i rekkefølgen fra questions_pool.csv |
Tegnet i posisjon i er orakelets answer på question i rad i:
1 = yes;0 = no.Orakelet er deterministisk og frosset. Tabellen representerer dets oppfatninger, ikke en fullkommen zoologisk kunnskapsbase, så noen svar kan være diskutable. Løsningen må optimalisere policyen for de faktiske responses som er lagret i tabellen.
Last opp et arkiv med følgende struktur:
submission.zip└── submission.csvsubmission.csv må ligge i roten av arkivet. Arkivet må ikke inneholde noen andre filer.
CSV-filen må inneholde nøyaktig følgende kolonner:
id,subtaskID,answerid — unik numerisk identifikator for noden;subtaskID — alltid 1;answer — beskrivelse av noden.Rotnoden må ha id = 0.
Ikke last opp
submission.csvdirekte. Plattformen må motta arkivetsubmission.zip.
Q|question_id|yes_node|no_nodeEksempel:
0,1,Q|Q0001|1|2Hvis answer på Q0001 er yes, fortsetter evaluereren til node 1; ellers fortsetter den til node 2.
G|animal|wrong_nodeEksempel:
1,1,G|agouti|3Evaluereren spør: «Er animal agouti?» Hvis guess er correct, avsluttes tilfellet. Hvis guess er wrong, fortsetter evalueringen ved node 3.
Spesialverdien END betyr at policyen gir opp:
2,1,G|alligator gar|ENDFordi feltet
answerinneholder tegnet|, kreves no spesiell CSV-escaping. Dyrenavn inneholder ikke|.
For hvert skjult animal er høyst 15 kall tillatt.
Hver besøkte node forbruker nøyaktig ett kall:
Q-node forbruker ett kall;G-node forbruker ett kall, uavhengig av om guess er correct eller wrong.Etter det 15th kallet avsluttes tilfellet automatisk.
For hvert animal:
score_case = max(0, (1 if guessed correctly, otherwise 0) - 0.02 × calls_used)Eksempler:
0.98;0.90;0.70;0.Sluttpoengsummen er:
100 × mean(score_case)Den teoretiske maksimale poengsummen er 98, fordi selv en umiddelbar correct guess forbruker ett kall.
20,000 noder;0 må finnes;question_id må finnes i questions_pool.csv;animals_pool.txt for å være correct;submission.csv.Innholdet i submission.csv:
id,subtaskID,answer0,1,Q|Q0001|1|21,1,G|agouti|END2,1,G|alligator gar|ENDDenne policyen stiller ett enkelt question og foretar deretter én enkelt guess. Den løser bare tilfellene der de to bladene samsvarer med det skjulte animal.
log2(250) ≈ 7.97. I et ideelt tre ville omtrent åtte binære svar være nok til å skille mellom de 250 dyrene, men de tilgjengelige spørsmålene deler ikke alltid kandidatsettet fullkomment i to halvdeler.
En nyttig strategi er å:
yes og no rekursivt;Problemet er en ONIA-tilpasning av notatboken Hjemmeoppgave 3 — John Wilkins' analytiske språk, publisert i IOAI 2026-repositoriet. Den LLM-baserte interaktoren ble erstattet med et frosset orakel slik at evalueringen forblir rask og deterministisk.