Winnaars van de Pi-dag challenge 2023

De Pi-dag challenge 2023 heeft overtuigende winnaars opgeleverd en ook daarnaast veel interessante inzendingen. Ze getuigen deels van inventiviteit om loopholes in de regels te benutten, en daarmee van creativiteit, maar ook zeker van een enorme slimheid in programmeren.

De challenge werd uitgeschreven in het kader van Pi-dag, ofwel de International Day of Mathematics. De opgave was om het kortste en snelste algoritme te vinden dat voor een reeks getallen de bijbehorende Pisano-getallen teruggeeft.

Er was een aantal kandidaten die de challenge niet alleen geprobeerd hebben op te lossen binnen de geest van de regels, maar ook naar de letter gekeken hebben. Het loont namelijk om creatief te zijn in waar je de code vandaan haalt. Dingen die we voorbij zagen komen: code in de bestandsnaam stoppen en die in je script dan eruit halen; gebruik van exec(“<python code…>”) om onder de whitespace regels uit te komen en het inrichten van een Cloud-service om de juiste antwoorden terug te geven.

De winnaars

De inzenders in de top 3 hadden ook oplossingen die geen gebruik maken van loopholes in de regels. Het was interessant om te zien dat ze alle drie naar hetzelfde algoritme toe geconvergeerd zijn. Het grootste verschil was de mate waarin de laatste overtollige bytes uit broncode gehaald werden.

  1. Stef Maree
    Stef had de oplossing met de beste score. Voornamelijk omdat het bestand maar 64 bytes groot was omdat hij het algoritme zelf in de bestandsnaam gestopt had. Maar ook zonder deze maas in de regels te gebruiken had Stef andere slimme oplossingen gevonden.
  2. Jaap Versteegh
    Jaap had een mooie korte oplossing gevonden, die misschien niet helemaal is zoals je een stukje Python code normaal zou schrijven, maar toch nog heel erg leesbaar is voor een compacte code.
  3. Berry den Hartog
    Naast een variant van het algoritme dat Jaap en Stef gevonden hadden, is Berry helemaal losgegaan op verschillende andere methoden. Maar bijvoorbeeld de toevoeging van multiprocessing leverde niet genoeg in snelheid op om de extra bytes in broncode waard te zijn. Bijzonder is nog dat Berry ook een script had dat een door hem gemaakte Cloud-service vroeg naar de antwoorden. Dit werkt goed, maar simpelweg het maken van het webrequest kost al meer karakters in Python dan de meest simpele implementatie van het algoritme zelf, dus een goede score leverde het niet op.

Eervolle vermelding

Tot slot nog een eervolle vermelding voor Gerard Groenewegen. Zijn door ChatGPT gegenereerde oplossing was inderdaad een stukje geldige Python code. Eén randgeval (het eerste getal in de rij) werkte niet, maar die zat niet in de test set, dus de oplossing voldeed aan de eisen. De code was echter totaal niet geminimaliseerd in omvang, dus de totaalscore was niet hoog genoeg om in de top 3 te komen.

Tenslotte

We danken alle deelnemers voor hun inzendingen. Het doet goed om zoveel enthousiasme en vaardigheid te zien. De winnaars krijgen hun prijzen thuisgestuurd.