De skarpeste hjerner fra de danske universiteter mødtes lørdag på henholdsvis Aarhus Universitet og ITU til de nordiske (og baltiske) mesterskaber i programmering.
Samtidig var der tilsvarende arrangementer i Norge, Sverige, Finland, Estland og Letland. I alt dystede 609 hold med at løse de 11 opgaver på under fem timer.
Resultatet blev, efter fem timers benhård indsats, at Danmark besatte fire af pladserne i Top 10, nemlig 1, 2, 6 og 9, mens Sverige tog tre (3, 4 og 7), Finland to (5 og 10) og Norge én (8).
Tip til læseren: Det kan varmt anbefales at læse Kaare Danielsens artikel om mesterskaberne i 2024 her.
Her forklares reglerne og den sammenhæng, som de nordiske mesterskaber har med de nordeuropæiske mesterskaber, NWERC, og siden verdensmesterskaberne.
De kan også studeres på den formelle hjemmeside her..
Kort fortalt: Der må ikke anvendes internet, smartphones eller Generativ AI, men man må gerne bruge kode og programmer, der ligger på pc’en på forhånd.
I år var de danske mesterskaber flyttet fra KU til ITU for første gang, men de frivillige fra Netcompany og ITU, samt Jobindex’ it-direktør Klaus Skelbæk Madsen sørgede for, at alt forløb efter planen.
51 hold - og hvilke navne!
I den store aula på ITU var der opstillet 51 borde i 17 rækker, og ved hvert bord hang der et skilt med navnet på holdet.
Nogle eksempler:
Hello Wørld, Unravelling Salesmen, Core Dumplings, Stack Overflowers, 3 little 3 late, Ctrl Alt Elite, og ikke mindst:
[&](auto& self, i64 i) -> void { vis = 1; f(i); for (i64 n : adj) if (!vis[n]) self(self, n); };
Dét måtte Deres udsendte lige køres gennem ChatGPT, som svarede:
“Det er en rekursiv dybde-først-søgning (DFS) i en graf, skrevet som en lambda-funktion i moderne C++. Så ja — teamet har opkaldt sig efter en rekursiv C++-lambda. Det er næsten den perfekte blanding af programmeringskunst og selvironi 😄.”
Alle 609 holdnavne kan studeres her.
Ét hold, ét bord, én mand
Det midterste bord i række 17, med holdnavnet BishBashBosh, tiltrak sig Deres udsendtes opmærksomhed før starten: Der var nemlig kun én deltager.
Nogle hold havde to deltagere, hovedparten havde tre, men BishBashBosh var det eneste solo-hold den dag på ITU - og han hedder Casper Kejser.
Han læser på Datalogisk Institut, Københavns Universitet (DIKU), men bor pt. i Aarhus, da han mangler et sted at bo i København.
Han ankom direkte fra lufthavnen til konkurrencen efter en smuttur til Skotland og har lige fuldført et års studieophold på universitetet i München.
Han blev nummer 12 sidste år, hvor han vakte opmærksom med sit énmands-hold Oo, og han håbede på en bedre placering i år.
Har danske talenter Silicon Valley-potentiale?
To af deltagerne fra teamet Unravelling Salesman, Nadja og Nikolaj, repræsenterer to sider af Danmarks it-miljø.
Nikolaj er forskningsassistent på IT-Universitetet i København, mens Nadja netop har fået sin første månedsløn som programmør hos Samsung efter sine studier på ITU.
På spørgsmålet om de mente, at Danmark kunne fostre talenter, der kan måle sig med de 200-300 mennesker i verden, som i dag kan opnå de allerhøjeste lønninger i Silicon Valley – hvis de vælger at specialisere sig i kunstig intelligens - svarede de forsigtigt optimistisk.
De pegede på, at nogle af de mest dedikerede algoritmefolk i Danmark er udsprunget af miljøet omkring Aarhus Universitet og DIKU, hvor forskningsniveauet er højt og nørderiet trives.
IT-Universitetet, fortalte de, har til gengæld en mere praktisk tilgang med fokus på at uddanne kandidater, der hurtigt kan bringes i spil i erhvervslivet.
”Jeg ville nok ikke selv trives i Silicon Valley,” indrømmede Nikolaj. ”men jeg er overbevist om, at der findes danske udviklere, som kunne klare sig rigtig godt derovre – især på de tekniske fronter.”
Med et glimt i øjet fortalte de i øvrigt, at idéen til holdnavnet opstod dagen efter en god fredagsbar, hvor de havde følt sig mere unravelling end travelling.
Klokken 11:00: Starten går!
Klokken 1042 gennemgår Klaus Skelbæk Madsen fra Jobindex reglerne for deltagerne, og så går startskuddet klokken 11:00, og stilheden sænker sig, da alle hold vender papirerne med opgaverne, der ligger foran dem.
Efter knap en halv time begynder det at summe overalt, og der bliver tastet flittigt i computerne - hvert hold har kun én - og de første balloner dukker op.
For hver af de 11 opgaver, der går fra A til K, er der nemlig på forhånd pustet balloner op i forskellige farver.
Når et hold har indsendt en løsning, som bliver godkendt, bliver der anbragt en ballon ved holdets bord, så efter kort tid er den store lobby i stål og glas et farvestrålende skue.
Efter 39 minutter har flere hold løst fem opgaver. Énmandshæren Casper Kejser har løst tre.
Efter tre timer og 35 minutter er han nummer et. Men der blev jævnligt byttet ud i toppen.
De frivillige udfører et kæmpe arbejde
De frivillige fortjener stor ros: De fleste er fra Netcompany’s HR-afdeling og sørger for, at der hele tiden er snacks, drikkevarer og en sandwich til frokost.
Fra Netcompany deltager også en tidligere ITU-studerende, Rasmus Pontoppidan, som frivillig.
Han er til dagligt teamleader for nogle udviklere.
Computerworld spørger ham, om vi i Danmark kan måle os med resten af verden, og måske endda producere nogle af de hjerner, der kan afhjælpe den store mangel på talent i forhold til AI-udviklingen i Silicon Valley og andre steder.
Rasmus Pontoppidan svarer, at Silicon Valley har mere dybde i arbejdsmarkedet, det vil sige flere mennesker og meget mere risikovillig kapital, end vi har.
På den anden side gør han opmærksom på, at Storkøbenhavn - fra Malmparken i Ballerup til Malmö i Skåne - er én stor techhub nu, omend vi som sagt mangler risikovillig kapital i svær grad.
Klaus Skelbæk Madsen fra Jobindex fortjener også at blive omtalt.
Han er hvert år nærmest den grå eminence, der sørger for, at alt det tekniske forløber som det skal, at deltagerne kan få printet, og andre praktiske ting undervejs.
Udskillelsen begynder
Efter en time til halvanden begynder der at være tydelige forskelle på, hvordan det går for holdene.
Udover det meget flotte visuelle indtryk med ballonerne i forskellige farver på bordene er det også muligt at følge med i stillingen på to store skærme.
Ret hurtigt ligger team BishBashBosh, det vil sige. énmandshæren Casper Kejser, sig oppe i den gode ende, men der bliver kæmpet hårdt, og der er en meget intens stemning i de fem timer, konkurrencen løber.
Reglerne foreskriver, at man skal være studerende, og højst have læst fire år, men old boys-hold må gerne deltage, dog uden at være “IPCP Elligeble”, det vil sige kvalificeret til at kunne deltage i de videre mesterskaber på europæisk og verdens-plan.
Et godt eksempel er vinderne fra 2024 (“Just Balloons”), hvor to af de tre deltagere stillede op som team “snowman”, men nu var old boys.
Professoren, der elsker algoritmer
En nøgleperson i forhold til afholdelse af både DM og de nordiske mesterskaber i programmering er professor Thure Husfeldt fra ITU, hvis profil man kan studere HER.
Han er med i den gruppe, der udformer opgaverne hvert år, og er - ifølge nogle af hans tidligere elever, som Deres udsendte taler med - en levende legende og sand ildsjæl på ITU.
Alle, der læser computer science på ITU, skal tage hans klasse i grundlæggende algoritmer - og i en af hans seancer underviser han for eksempel i den algoritme, der kaldes quick-sort, ved at lade de studerende “sortere” papirark med bogstaver på, som han har udleveret.
Det lykkedes Deres udsendte at få et ganske kort interview med den populære professor, hvor han blandt andet understreger, at noget af det vigtigste ved disse tilbagevendende konkurrencer er, at når de studerende senere i livet møder nogle af de andre deltagere, så har de nogle udfordrende og fælles oplevelser at se tilbage på sammen, og dermed et bedre udgangspunkt for at kunne samarbejde og forstå hinanden.
Klokken 15:00: Slutspurten går ind
Tilbage til konkurrencen: Klokken 15:00 bliver der stoppet for visning af stillingen på skærmene, og klokken 16:00 råber Klaus Madsen, at nu er konkurrencen slut.
Derefter går alle ind i ITU’s bar, Scroll Bar, hvor der bliver serveret øl og gennemgået de rigtige svar på en storskærm, hvor den nordiske ledelse - én af dem med på en forbindelse fra Austin, Texas - både kæmper med at få softwaren til at vise resultaterne og gennemgå de korrekte løsninger til opgaverne.
Men først skal der lige være lidt drama.
Sidste år “væltede” scoreboard-systemet nemlig i denne fase, og kom først op igen ved midnatstid, så der var lidt nerver på hos arrangørerne.
I år vælter det også, men det kommer heldigvis hurtigt op at køre igen, og derefter forløber alt efter planen og vinderne kankåres.
Og vinderne er…
Førstepladsen går til to af de tre 2024-vindere (der dengang kaldte sig “Just Balloons”), og i år kalder sig Team Snowman, nemlig de to kinesiske sværvægtere Shuyi Yan og Hanwen Zhang.
Men de er et old boys-hold, så den virkelige vinder af det nordiske mesterskab og de 10.000 kroner og retten til at gå videre til de nordeuropæiske mesterskaber bliver…
Casper Kejser!
Præmien på de 10.000 kroner, symboliseret ved et kæmpecheck i pap, må han bruge som han vil, men én mulighed er at deltage i de nordeuropæiske mesterskaber, og måske endda senere i VM.
Det lykkedes trods alt i 2015 for et hold fra KU at nå til VM, så hvorfor ikke?
Mestrene mødes
Casper selv er synligt træt, måske også stadig fyldt med adrenalin efter konkurrencen og præmieoverrækkelsen, og han er ikke lige klar til at tage beslutningen om, hvorvidt han vil bruge pengene til at gå videre. Han glæder sig til at få sovet lidt.
Mens Deres udsendte står og talte med Casper, kommer William Bille Meyling hen og lykønsker varmt Casper med sejren.
William Meyling er selv “uofficiel verdensmester i programmering af geometriske algoritmer” og danmarksmester i AI. Computerworld spørger ham, hvad han laver for tiden, og det lidt overraskende svar er, at han leder efter arbejde.
Så alt i alt kunne Deres udsendte konstatere, at to helt store talenter i Danmark henholdsvis mangler et job og et sted at bo, men at Danmark bestemt ikke mangler talent og vilje.
På https://ncpc25.kattis.com findes en masse information og detaljer om selve konkurrencen, de 609 deltagende hold, opgaverne, placeringerne med meget mere.
Under fanen “Standings”, hvis man scroller lidt ned, finder man slutresultatet af konkurrencen.