Om Rundene
NIO arrangerer 3 runder, og formatet er litt ulikt fra runde til runde. Runde 2 og finalen ligner oppgavene i de internasjonale olympiadene, bare en god del enklere. Denne siden beskriver formatene til rundene, og lenker til litt praktisk tilleggsinformasjon.
Runde 1
Første runde arrangeres en uke i slutten av året, oftest uke 46. Testen skal utføres på skolen under tilsyn av lærer, som selv kan finne en passende ukedag og tidspunkt for gjennomføringen. Lærere som ønsker å arrangere NIO på sine skoler kan melde seg på for å få tilgang. Når du er påmeldt får du e-post fredagen uka før konkurransen starter. Se forsiden for årets program.
Konkurransen er individuell, og gjøres på PC. Du trenger ikke installere noe, men får en lenke og kode av læreren som arrangerer. Koden er felles for skolen, så man trenger ikke melde på elever individuelt. Når du starter testen oppgir du e-post-addresse, slik at vi kan kontakte de som kommer vidre til 2. runde.
Runden består av omtrent 10 oppgaver, og deltagerene får 40 minutter på seg. Hver oppgave finnes i 3 varianter i stigende vanskelighetsgrad som gir henholdsvis 2, 3 eller 4 poeng. Hvis man løser flere varianter av samme oppgave får man kun poeng for den vanskeligste, så det er mulig å spare tid ved å hoppe over noen av de letteste. Du får så mange forsøk du vil på oppgavene, og kan fritt hoppe mellom oppgaver. På forsiden har du hele tiden oversikt over hvor mange poeng du har sikret deg så langt.
Oppgavene skal teste systematisk tenking og programmering, men det kreves ingen tidligere programmeringskunnskaper. Oppgavetekstene forklarer alt du trenger å vite, og utover det får du ingen andre hjelpemidler enn papir og blyant. Du kan altså ikke bruke internett, bøker eller programmer utenfor konkurransenettsiden.
Det digitale formatet for runde 1 begynte i skoleåret 2018/2019. Du kan prøve deg på en tidligere runde ved å gå til tidligere oppgaver. Her finnes også noen oppgaver fra før runde 1 ble digital.
Runde 2
De ca. 200 beste fra runde 1 publiseres på nettsiden og inviteres til runde 2. Den varer en hel uke i Januar, og består av 4-5 oppgaver.
Oppgavene
Oppgavene går ut på å skrive dataprogrammer som løser konkrete problemer, der programmet ditt skal lese inn parametere og gi ut et korrekt resultat.
Du kan se en fullstendig gjennomgang av denne oppgaven på siden Min første runde 2-oppgave.
Du kan se flere eksempler blant tidligere oppgaver. For trening og tips til denne typen oppgaver, se treningssiden. Mange av oppgavene fra tidligere runde 2 og finaler ligger også på treningsserveren. Her kan du levere egne løsninger og få poeng.
Poeng
Når du har et program leverer du det til konkurranseserveren. Der testes besvarelsen din på en mengde hemmelige inputs. Den hemmelige inputen er delt opp i grupper med ulike begrensninger, og programmet ditt testes på alle.
Dersom programmet ditt gir riktig svar på alle inputs i en gruppe, får du poengene for den gruppen. Hvis programmet ga feil svar, krasjet eller brukte for lang tid på noen av inputene får du 0 poeng for den gruppen. Du kan prøve på nytt og levere så mange ganger du vil1. Oppgavene varierer i vanskelighetsgrad, men alle gir til sammen 100 poeng. Akkurat som i runde 1 har du til envher tid oversikt over hvor mange poeng du har fått til nå.
Dersom du leverer flere besvarelser på samme oppgave, er det den besvarelsen som gir mest poeng som er tellende, men dette regnes ut individuelt for hver testsettgruppe. Det vil si at du i praksis kan ha ulike løsninger som løser ulike deloppgaver. For eksempel: hvis du har to besvarelser, en som gir 50 poeng på testsettgruppe 1 og null poeng på testsettgruppe 2, og en som gir null poeng på testsettgruppe 1 og 50 poeng på testsettgruppe 2, så vil du få 100 poeng totalt for den oppgaven.
Progammeringsspråk
Programmet du skriver må være i ett av de godkjente programmeringsspråkene: Python 2/3, Java eller C++11. Vi anbefaler C++ siden samme algoritme ofte er raskere i C++. Hvor mange poeng du får er ikke basert på hvor raskt programmet kjører, men programmet må være raskt nok på alle testinput i gruppen for å få poeng. Fasit kjører oftest innen en brøkdel av tidsbegrensningen, men den er ofte skrevet i C++. Vi kan ikke garantere at andre språk vil være raske nok.
Regler
Siden runde 2 er uttak til nasjonal og internasjonale finaler, er det ikke tillatt å bruke KI-verktøy. Dette inkludere samtaleverktøy som ChatGPT der man kan spørre om bestemte problemer, og verktøy innebygd i teksteditoren som bruker språkmodeller til å foreslå kode.
Moderne teksteditorer kan finne på å tilby KI-hjelp helt uoppfordret, så vi har skrevet en liste med forslag til teksteditorer som ligner på de teksteditorene dere har tilgang til i finalen. For de som ønsker å bruke Visual Studio Code har vi beskrevet hvordan du kan skru av innebygd KI-funksjonalitet.
Det er ikke lov å diskutere innholdet i oppgaver eller egne løsninger med noen andre, og det inkluderer også språkmodeller. Når du bruker Google kan det være lurt å søke via udm14.com, som gir deg den vanlige resultatsiden til Google, bare uten noe AI-oversikt på toppen.
Utover dette har du lov til å bruke alt av tradisjonelle hjelpemidler, slik som bøker og nettsider. Dette er en mulighet til å lære både programmeringsspråk, konkurransesystem og kjente algoritmer. Husk at dere på finaler har tilgang til programmeringsspråkenes dokumentasjon, så det kan være lurt å bli kjent med å lese den.
Det er ikke lov til å omgå konkurranseserveren, eller prøve å datamine den hemmelige testinputen.
Finale
Fra runde 2 vil minimum topp 15 deltagere inviteres til finalen på Universitetet i Bergen. Vi vil også invitere et knippe yngre deltagere og jenter, for å sikre rekrutering til fremtidige internasjonale konkurranser, og deltakere til den Europeiske informatikkolympiaden for jenter (EGOI). Oppholdet i Bergen er ca. 4 dager, og NIO dekker kost og losji.
På finalen er formatet likt som runde 2, med 4-5 oppgaver som skal programmeres. Oppgavene er vanskeligere, og man får kun 5 timer. De eneste hjelpemidlene man får er blyant og papir, og eventuelle hjelpemidler trykt på papir du tar med deg på konkurransen. Programmeringsspråkenes dokumentasjon vil være tilgjengelig fra konkurranseserveren.
På finalen og i internasjonale konkurranser vil du få utdelt en maskin. Disse kjører som regel Linux, og har et knippe enkle teksteditorer. Testing av programmer vil som regel også foregå i terminalen. For å forberede deg på denne typen maskiner, eller lage et lignende oppsett på din egen maskin, les om finaledatamaskiner her.
-
Vi setter noen begrensninger for å hindre misbruk, men i praksis har man så mange forsøk man vil. ↩︎