I dag Finalen i den internationella programmeringstävlingen ICPC 2019 kommer att hållas i den portugisiska staden Porto. Representanter för ITMO University och andra lag från universitet i Ryssland, Kina, Indien, USA och andra länder kommer att delta i den. Låt oss berätta mer i detalj.
icpcnews /flickr/ CC BY / Bilder från ICPC-2016-finalerna i Phuket
Vad är ICPC
ICPC är en internationell programmeringstävling bland studenter. De har hållits i över 40 år – den första finalen jag var redan 1977. Urvalet görs i flera steg. Universiteten är indelade efter region (Europa, Asien, Afrika, Amerika, etc.). Var och en av dem är värd för mellanstadier, i synnerhet de norra eurasiska semifinalerna ägde rum på vårt universitet. Vinnarna av de regionala etapperna deltar i finalen.
På ICPC uppmanas team om tre deltagare att lösa ett antal problem med en dator (ej ansluten till Internet). Utöver programmeringskunskaper testas alltså även lagarbete.
Under tävlingen, lag kommer att få en dator för tre personer. Den kör Ubuntu 18.04 och har vi/vim, gvim, emacs, gedit, geany och kate förinstallerade. Du kan skriva program i Python, Kotlin, Java eller C++.
När teamet löser ett problem skickar det vidare det till testservern som utvärderar koden. Deltagarna vet inte vilka tester maskinen utför. Om alla lyckas får laget bonuspoäng. Annars genereras ett fel och eleverna skickas för att rätta koden.
Enligt ICPC:s regler vinner det lag som löser flest problem. Om det finns flera sådana lag bestäms vinnaren av den minsta strafftiden. Deltagarna får straffminuter för varje löst problem. Antalet minuter är lika med tiden från tävlingens start till att testservern accepterar uppgiften. Om laget hittar en lösning får det ytterligare tjugo minuters straff för varje felaktigt försök att passera den.
icpcnews /flickr/ CC BY / Bilder från ICPC-2016-finalerna i Phuket
Provproblem
Målen för mästerskapet kräver lagkoordination och koncentration. Dessutom testar de kunskaper om individuella matematiska algoritmer. Här är ett exempel på en uppgift som erbjöds ICPC 2018-deltagare:
I typografi finns det en term "flod" - det här är en sekvens av mellanslag mellan ord, som är bildad av flera textrader. En viss flodexpert (på riktigt) vill ge ut en bok. Han vill att de längsta typografiska floderna ska "formas" på sidan när man skriver ut i monospace. Deltagarna var tvungna att bestämma bredden på fälten där detta villkor skulle uppfyllas.
Vid ingången fick programmet ett heltal n (2 ≤ n ≤ 2 500), som bestämmer antalet ord i texten. Därefter skrevs texten in: ord på en rad var åtskilda med ett mellanslag och fick inte bestå av mer än 80 tecken.
Vid utgången var programmet tvungen att visa bredden på fälten där den längsta "floden" bildas, och längden på denna flod.