Artikel top billede

Lord of the Graphs fra Danmarks Tekniske Universitet i dyb koncentration

Efter et intenst forløb blev vinderen af DM i Programmering fundet i weekenden: Sådan forløb dagen

Reportage: Aarhus vandt foran København, så der blev byttet rundt på de to første hold i forhold til sidste år, og oldboysholdet Just Balloons vandt suverænt den nordiske konkurrence.

74 hold er mødt op en lørdag morgen på Københavns Universitet og Aarhus Universitet for at konkurrere om det traditionsrige DM i Programmering, det største antal nogensinde.

Og i år er der spænding om udfaldet. For nogle af deltagerne fra sidste års hold nummer 1 og 2 er faldet for aldersgrænsen og kan derfor ikke deltage.

DM i Programmering er nemlig en studenterkonkurrence, og for at være med i den officielle konkurrence skal man være universitetsstuderende og må maksimalt have læst i fire år.

Så sidste års nummer 1 og 2 har måttet skifte ud på holdet, så det er ret åbent, hvem der vinder i år.

Konkurrencen foregår i hold på hver tre personer. Det gælder om at løse flest af programmeringsopgaverne på de fem timer, konkurrencen varer.

Hvis flere hold har løst det samme antal opgaver, er det tiden, der afgør vinderne.

Når man har løst en opgave, sender man programmet ind til en server, der tester programmet mod nogle testdata. Hvis man indsender en løsning, der indeholder fejl eller ikke kan klare alle testcasene, får man 20 strafminutter og må prøve igen.

Klokken 11:00 bliver opgaver frigivet, og der bliver helt stille i kantinen på Biocenteret på Københavns Universitet, hvor konkurrencen på Sjælland foregår, og hvor der er samlet hold fra Københavns Universitet, IT-Universitetet og Danmarks Tekniske Universitet.

De jyske hold er samlet på Aarhus Universitet, og konkurrencen bliver samtidigt afholdt på lokationer i Sverige, Norge, Finland, Island, Letland og Estland.

Når konkurrencen går i gang, gælder det om at få identificeret de nemme opgaver og få løst dem hurtigst muligt.

Der er tale om algoritmiske opgaver, hvor programmerne ikke behøver at være særligt lange, men hvor det svære ligger i at udvikle en algoritme, der kan løse problemet.

Opgaverne varierer i sværhedsgrad, fra opgaver som mange af holdene kan løse på få minutter, til opgaver som kun nogle få hold kunne løse.

Så går slaget i gang

Efter fem minutter har tre hold løst den første opgave.

3 little 3 late fra Københavns Universitet, Arne Marie iis unicorns fra Aarhus og Lord of the Graphs fra Danmarks Tekniske Universitet har lagt sig i spidsen ved at løse den første opgave, og tre hold ligger dermed lige i spidsen.

De får hurtigt følgeskab af Olsen Banden og Pizza Driven Development fra Aarhus, Øhmmm? og Avocado toast fra Københavns Universitet og Ctrl Alt Elite fra IT-Universitet, der løser den første opgave efter 8-10 minutter.

Et minut senere løser sidste års nummer tre, Øhmmm?, også opgave nummer to og lægger sig dermed i spidsen.

Men efter 10 minutter har 3 little 3 late, Pizza Driven Development og Databanden også løst den anden opgave.

Men allerede efter 23 minutter får 3 little 3 late løst den tredje opgave, men først i andet forsøg. Og det giver 20 strafminutter, hvis man indsender en forkert opgave.

Så da Lord of the Graphs efter 27 minutter løser deres tredje opgave i første forsøg, lægger de sig i spidsen. I sidste ende er det antallet af løste opgaver, der er afgørende. Men hvis flere hold ligger lige, så er det tiden og strafminutterne, der tæller.

Bliver sværere og sværere

Efter den første time har ÅH JA og Øhmmm? fra Københavns Universitet, Olsen Banden, Low Cohesion og Team MongoAbe fra Aarhus Universitet og Ctrl Alt Elite fra IT-Universitetet løst den tredje opgave, og derefter har otte hold fra tre forskellige universiteter løst de første tre opgaver.

Men derefter skifter konkurrencen karakter. For i sidste ende er det antallet af løste opgaver, der afgør hvem som vinder. Og opgaverne bliver gradvist sværere og sværere.

Så DM i Programmering bliver i sidste ende ikke vundet af dem, som er hurtigst, men af dem, som er i stand til at løse de svære opgaver.

Og de sværeste opgaver tager selv de bedste hold flere timer at løse. Så intet er afgjort endnu.

Se alle opgaverne på adressen: https://ncpc24.kattis.com/problems

Effektive løsninger

Man skal ikke bare lave et program, der kan løse opgaverne, man skal ofte også finde en effektiv løsning, som kan løse opgaverne inden for den specificerede køretid på fem sekunder.

Og ikke bare testdatasættene, men også tallene, kan være endog meget store.

I opgave I skal man for eksempel regne med tal på op til 1.000 bit. Og når opgaverne bliver sværere, begynder de mere erfarne hold at markere sig i konkurrencen.

3 little 3 late er de første, der kaster sig ud i opgave I.

3 little 3 late fra Københavns Universitet består Thor Eriksen og Elias fra sidste års vinderhold, plus det nye medlem, Asbjørn Lind, så de er blandt favoritterne.

Men de har hele seks forgæves forsøg på at løse opgaven, hvilket giver hele 120 strafminutter.

Efter halvanden time får Lord of the Graphs løst opgave I i første forsøg og lægger sig dermed i spidsen af konkurrencen.

Lord of the Graphs består af Martin Moos Hansen, Hugo Moeller Nielsen og Benjamin Braüner fra Danmarks Tekniske Universitet.

Opgør mellem København og Aarhus

Kort tid efter får Pizza Driven Development, Team MongoAbe og Low Cohesion fra Aarhus Universitet også løst den fjerde opgave.

Dermed ligner det som så ofte før et opgør mellem København og Aarhus.

Den næste time sker der ikke så meget, hvilket forklarer, hvorfor DM i Programmering ikke tiltrækker lige så mange tilskuere som andre store esport-begivenheder.

Men efter tre timer løser Oo og Pizza Driven Development fra Aarhus også opgave fem og lægger sig dermed i spidsen, og kort tid efter får de også løst den sjette opgave.

Pizza Driven Development fra Aarhus Universitet består af Daniel Anker Hermansen og Markus Mathiasen fra sidste års nummer to samt det nye medlem, Jesper Bech Christensen.

I mellemtiden har Lord of the Graphs fra DtU, 3 little 3 late fra Københavns Universitet og Ctrl Alt Elite fra IT-Universitetet også løst den femte opgave.

Ctrl Alt Elite består af Frederik Petersen, William Heidemann og Andreas Guldborg Hansen.

Der er nu fem hold fra fire forskellige universiteter, der reelt kan vinde. Og DM i Programmering bliver så afgjort af, hvem af holdene, der kan få løst den syvende opgave.

Den sidste time af konkurrencen bliver tavlen med stillingen ikke længere opdateret. Holdene ved derfor ikke længere, hvordan de andre hold ligger, og om nogle af de andre hold har løst den syvende opgave.

Det er først til sidst ved selve præmieoverrækkelsen, at det bliver afsløret, hvem der har vundet konkurrencen.

Så er vinderen fundet

Ved præmieoverrækkelsen bliver det afsløret, at to hold, nemlig Pizza Driven Development og 3 little 3 late har løst fået den syvende opgave.

Men Pizza Driven Development fra Aarhus Universitet var hurtigst og havde færrest fejlforsøg og vinder konkurrencen og præmien på 10.000 kroner foran 3 little 3 late fra Københavns Universitet.

Dermed blev der byttet rundt på sidste års rækkefølge.

Se slutstillingen blandt de danske hold ved at klikke her.

Hvert universitet kan sende et hold videre til den nordeuropæiske finale NWERC, der ligesom sidste år bliver holdt i Delft i Holland i november.

Og de bedste hold fra NWERC går videre til verdensmesterskabet i programmering.

Det er kun en gang lykkedes et dansk hold at kvalificere sig til VM, og det var helt tilbage i 2015.

Uden for konkurrencen konkurreres der også

De gamle drenge kan stadig.

Uden for konkurrencen deltog forskellige oldboyshold, blandt andet Just Balloons fra København og DAIMI oldboys, SCALGO Men og Beyond Ballmer’s Peak fra Aarhus.

Just Balloons består af David Lolck, Shuyi Yan og Hanwen Zhang. De to første var med i The Ballon Animals fra Københavns Universitet, der for to år siden løste alle opgaverne og ikke bare vandt det danske mesterskab, men var de bedste i hele Norden.

Just Balloons lagde sig hurtigt i spidsen, ikke bare i Danmark, men i hele Norden og vandt hele den nordiske konkurrence ved at løse hele 10 opgaver, tre opgaver mere end de næstbedste hold, der løste syv opgaver.

Just Balloons løste blandt andert den svære opgave D på kun 10 minutter. Se om du kan gøre dem kunsten efter her: https://ncpc24.kattis.com/contests/ncpc24/problems/doubledeck

Uden for konkurrencen var der også et ungdomshold, LogN Legends, bestående af Lukas Abild samt Maia Vistisen og Freja Gregersen, der var med til den europæiske pigeolympiade i datalogi for gymnasieelever.

De var det næstbedste hold fra Københavns Universitet, selv om en af deltagerne af ikke er startet på studierne endnu.

Det tegner godt for næste år, hvor de kan være med i den officielle konkurrence.

DM i Programmering har også en mindre søskende, Dansk Datalogi-Dyst for gymnasielever.

Dansk Datalogi-Dyst er en del af Science Olympiaderne, der også omfatter konkurrencer i matematik, kemi, fysik, biologi og geografi.

Dansk Datalogi-Dyst begynder i dag mandag 7. oktober og varer tre uger frem. Man kan både løse opgaverne indsende dem online eller træne på øvelsesopgaverne.

De bedste deltagere kan gå videre til den internationale olympiade og den europæiske olympiade for piger. Hvis du kender en datalogi-interesseret gymnasie- eller folkeskoleelev, så kan man læse mere på siden https://danskdatalogidyst.dk/

DM i Programmering er sponseret og arrangeres af Netcompany og Jobindex, der ejer Computerworld, og afholdes i samarbejde med universiteterne.

Se videoen fra DM i Programmering 2023 på https://netcompany.com/dm/