Problemă #318
Autor:Echipa științifică ONIA
Dificultate
Maximul tău
N/A
Un semnal necunoscut se află în spatele uneia dintre cele 384 de uși
candidat. Poți folosi 144 de sonde, însă receptorul răspunde doar printr-un
semnal ternar: red, amber sau green. Receptoarele sunt imperfecte:
calibrarea lor modifică pragurile semnalului, iar toate răspunsurile evaluate au
fost înghețate în prealabil. Evaluarea este astfel deterministă, dar un model
care memorează numai receptorul nominal nu va generaliza.
Trimiterea ta este un DAG decizional declarativ. Într-un nod ask,
evaluatorul citește răspunsul ascuns și urmează una dintre cele trei muchii. Într-un
nod guess, încearcă în ordine ID-urile candidaților. Niciun cod trimis de
participant nu este executat.
candidates.csv: ID-ul, familia și 10 caracteristici publice pentru fiecareprobes.csv: ID-ul, costul (1, 2 sau 3), canalul și 8 caracteristici publicecalibration.csv: răspunsuri rare pentru patru receptoare cunoscute. Celedev_cases.csv: 72 de cazuri publice etichetate, cu răspunsuri înghețate;contract.json: dimensiuni, etichetele răspunsurilor și bugetul;baseline.py, strategy_tools.py, validate_submission.py șilocal_score.py: baseline complet în NumPy și instrumente locale.Setul public de dezvoltare este destinat experimentelor, nu este un split de
evaluare.
Scorul live/parțial conține 96 de cazuri:
Scorul final/complet conține 144 de cazuri distincte:
Țintele, răspunsurile complete și parametrii receptoarelor ascunse rămân
private.
Fiecare sondă are costul întreg din probes.csv, iar fiecare încercare finală
costă 2 unități. Orice traseu posibil de la rădăcină la frunză trebuie să
folosească cel mult 20 de unități. Validatorul verifică traseul cel mai scump
care ajunge în fiecare nod comun al DAG-ului.
Pentru un caz rezolvat după un cost c, utilitatea este
1 - 0.0125 × c.
Un caz nerezolvat are utilitate zero. Scorul afișat este de 100 de ori utilitatea
medie. Metrica secundară este rata de identificare. Mai mare înseamnă mai bine.
Încarcă o arhivă ZIP care conține exact un singur fișier strategy.json la
rădăcină, de cel mult 12 MiB. JSON-ul este strict: cheile duplicate, numerele cu
virgulă, NaN, Infinity, indicii Boolean și câmpurile necunoscute sunt
respinse.
{ "schema": "ioai-2026-noisy-oracle-policy-v1", "dataset_revision": "noisy-oracle-labyrinth-2026.07.21.1", "root": 0, "nodes": [ {"type": "ask", "probe": 12, "red": 1, "amber": 2, "green": 3}, {"type": "guess", "candidates": [17, 44]}, {"type": "guess", "candidates": [91]}, {"type": "guess", "candidates": [203, 8]} ]}Reguli:
root și toate muchiile sunt indici de nod, numerotați de la zero;probe este în [0, 143], iar candidații în [0, 383];ask conține exact type, probe, red, amber, green;guess conține exact type, candidates; lista este nevidă și fărăPoți reproduce baseline-ul astfel:
python3 baseline.py --dataset-dir . --output submission.zippython3 validate_submission.py submission.zippython3 local_score.py --dataset-dir . --submission submission.zipBaseline-ul furnizat necesită doar Python și NumPy. Poți antrena local orice
model, însă artefactul încărcat trebuie să rămână DAG-ul JSON declarativ.
Soluțiile puternice pot combina un model ternar al răspunsului, calibrare
robustă la receptor, câștig informațional raportat la cost, actualizări ale
posteriorului și partajarea atentă a subarborilor echivalenți. Familiile și
canalele oferă structură utilă, dar nu sunt etichete garantate pentru deplasările
ascunse.