Huidige Student Challenge 2021 recordhouder

Laurens Scheldeman = 1688 ns

Wat is de Dekimo Student Challenge 2021 ?

De Student Challenge 2021 is een wedstrijd georganiseerd door Dekimo om op een embedded platform te programmeren. De uitdaging is om een eigen implementatie te maken op een Arduino bord om snel anagrammen te herkennen die via USB doorgestuurd worden. Het lopende record van de uitvoeringstijd wordt bijgehouden en moet worden overtroffen. Uw inzending wordt door een deskundige vakjury nagekeken en goedgekeurd. Wie het bestaande record breekt, wint een leuke prijs. Het Arduino bord wordt door Dekimo gratis ter beschikking gesteld, en je mag het achteraf ook houden.

De uitdaging:
Er bestaat een verrassend origineel algoritme om te beslissen of twee woorden anagrammen zijn van mekaar of niet, gebaseerd op priemgetallen. Aan elke letter van het alfabet wordt een uniek priemgetal toegekend, bijvoorbeeld A=2, B=3, C=5, D=7, E=11, …, Y=97 en Z=101. Van beide woorden worden nu de geassocieerde priemgetallen van elke letter met mekaar vermenigvuldigd. De twee woorden zijn anagrammen van mekaar als en slechts als beide vermenigvuldigingen hetzelfde product opleveren.

Bijvoorbeeld:
– DEKIMO = 7x11x31x23x41x47 = 105794227
– MEDIKO = 41x11x7x23x31x47 = 105794227
– MEDEME = 11³x41²x7 = 15661877

Dat dit algoritme altijd werkt is heel makkelijk te bewijzen. De ene richting (“anagrammen geven hetzelfde product”) is evident door de commutativiteit van de vermenigvuldiging. De andere richting (“als product hetzelfde is, dan zijn het anagrammen”) volgt uit de hoofdstelling van de rekenkunde dat elk natuurlijk getal een unieke ontbinding in priemfactoren heeft.

Echter, voor langere woorden loopt dit algoritme al snel in de problemen. De vermenigvuldigingen leiden tot grote getallen die niet meer in integer datatypes passen bij een software-implementatie. Je kan de problemen wat uitstellen door frequent voorkomende letters met de kleinere priemgetallen te associëren. Of je kan de logaritme nemen, waardoor de vermenigvuldigingen optellingen worden en de grote producten meer behapbare sommen worden. Geen van deze variaties leidt echter tot een echt efficiënte implementatie.

Het doel van deze wedstrijd is om beter te doen dan wat hierboven geschetst wordt, en om zelf een snel en schaalbaar algoritme te ontwerpen om te bepalen of twee lange letterreeksen anagrammen van mekaar zijn of niet. Dit algoritme moet geïmplementeerd worden op de Arduino die door Dekimo gratis ter beschikking gesteld wordt.

Deze wedstrijd is uitsluitend voor studenten uit België, Nederland en regio Aachen.
Vragen? Aarzel niet om ons te contacteren via het e-mailadres: studentchallenge at dekimo.com
Deadline om je resultaat op te laden: 05/09/21
Nadien organiseren we een andere wedstrijd, schrijf je hier in op onze mailinglijst om niets te missen.

Wie het record breekt, voor minstens 6 uur, mag kiezen uit één van onderstaande prijzen:

  • Arduino Uno Rev3 starter kit
  • Uitgebreide Arduino Starter Kit R3
  • Bluetooth speaker JBL Flip 5
  • Headset HyperX Cloud II
  • Tello Drone (DJI)
  • Google Nest Hub 2
  • Google Chromecast 3 + Google Nest mini
  • Game naar keuze voor PC, PS, Xbox of Switch bij Coolblue


Tip: Volgens legendes is een executietijd <1.000 ns mogelijk

Dekimo Student Challenge prizes

Deelnemen kan door onderstaand formulier in te vullen.

Vraag hier je Arduino aan met de gedetailleerde instructies en doe mee aan de challenge!

Om deel te nemen is het noodzakelijk het formulier volledig in te vullen. De adresgegevens en het telefoonnummer hebben we nodig voor de verzending van het pakketje. Je gegevens zullen niet voor andere doeleinden worden gebruikt.

Uitdaging gelukt? Upload hier je resultaat.

In principe verwachten we een *.ino bestand of een .zip als source-code voor Arduino-firmware.
Opmerking: Er wordt slechts één inzending per deelnemer aanvaard.

Scorebord Student Challenge recordhouders

Naam Tijd
Laurens Scheldeman 1688 nanoseconden
Cedric Den Haese 7000 nanoseconden
Matis De Schutter 16312 nanoseconden
Maarten C. (Dekimo medewerker) 18125 nanoseconden