Topkoder

Topcoder Inc.
Type virksomhed
Grundlag april, 2001
Beliggenhed USA , Connecticut , Glastonbury
Industri IT-bemanding Softwareudvikling
Outsourcing
ydelser
Antal medarbejdere 75 (2006) [1]
Internet side www.topcoder.com

Topcoder  er et selskab, der er vært for sportsprogrammeringskonkurrencer . I modsætning til ACM International Collegiate Programming Contest er alle konkurrencer individuelle.

Oprettet i april 2001. I juli 2008 var der mere end 160.000 brugere, hvoraf omkring 28.000 deltog i Algoritmekonkurrencen mindst én gang.

Typer af konkurrencer

Algoritmer ( eng.  Algorithm Competition )

Den mest populære type turneringer er en konkurrence om hurtig løsning af algoritmiske problemer (svarende til skole- og elevprogrammeringskonkurrencer). Det ligger i, at hver deltager får 3 opgaver, forskellige i kompleksitet, inddelt i 3 niveauer. Hver opgave har sin egen maksimale værdi i point. Normalt 250, 500 og 1000. Der gives kun point for løsninger, der er anerkendt som korrekte, delløsninger tages ikke i betragtning. Inden konkurrencestart tildeles deltagerne virtuelle rum (op til 20 personer).

Sådanne kampe, kaldet SRM (Single Round Match), finder sted cirka en gang hver anden uge. Derudover afholdes årlige turneringer. Kampen består af tre hovedfaser - kodning, udfordrende og systemtestning.

Programmeringsstadiet  _ Kodningsfase

I den første fase forsøger deltagerne at løse de tre opgaver, de bliver foreslået, normalt anslået til 250, 500 og 1000 point, inden for den tildelte tid. Løsningen er at oprette den klasse, der er angivet i betingelsen, og implementere den metode, der er angivet i betingelsen, ved at bestå alle forhåndsforberedte tests. Bidragydere har lov til at skrive løsninger på et af følgende sprog: C++ , C# , Java , VB.NET eller Python . Antallet af point for et løst problem afhænger ikke-lineært af tidspunktet for afsendelse af den endelige løsning: jo senere, jo færre point. For hver genindsendelse opkræves 10 % af opgavens omkostninger. Antallet af point kan ikke være mindre end 30 % af opgavens omkostninger.

Turens varighed i almindelige kampe ( eng.  Single Round Match , forkortet som SRM), samt kvalificerende konkurrencer af turneringer ( eng.  Online Elimination Rounds ) er 75 minutter. I onsite-finalerne ( eng.  Onsite Events ) er varigheden af ​​den første fase 85 minutter.

Konkurrencemæssig  testfase Udfordrende fase

I anden fase forsøger deltagerne at finde en test (indgangsdatamulighed), hvorpå deres konkurrenters løsninger (som er i samme virtuelle rum) vil fungere forkert. Samtidig er det tilladt at se kildekoden, men det er umuligt (umuligt) at køre konkurrerende programmer. Hver succesfuld tilgang giver 50 point, og en mislykket tilgang tager 25 point. Hvis tilgangen var vellykket, kan testen føjes til den testsuite, der bruges i næste fase. Varigheden af ​​denne fase er 15 minutter i alle kampe undtagen head-to-head finaler (10 minutter). Deltageren har forbud mod at forsøge at passe en test, hvor andre løsninger ikke virker, hvis hans score ikke er positiv.

Afsluttende testfase  Systemtestfase

I tredje fase testes alle løsninger fra alle deltagere, der ikke blev fundet forkerte i henhold til resultaterne af anden fase. De endelige resultater af kampene er ved at blive dannet.

Resultater

Klassificeringen af ​​deltagere og deres endelige placering på pladser bestemmes af det endelige antal point, deltagerne har. Deltagere med flere point indtager højere pladser. I tilfælde af pointlighed indtager (deler) alle deltagere med et givet antal point samme plads.

Hvis der ikke var tekniske fejl under konkurrencen, genberegnes ratingen for alle deltagere.

Design- og  redigér _

Dette er den type konkurrence, der er tættest på industriel programmering. Par af programmører deltager i dem. Den første skriver en detaljeret specifikation for en komponent bestilt af en tredjepartsvirksomhed, og den anden implementerer den i .NET eller Java. Arbejdet bliver evalueret af flere juryer, og efter deres vurdering sættes den endelige score.

Marathons ( English  Marathon Competition )

I maraton løser deltagerne mere komplekse og ikke-standardiserede problemer end i andre typer af programmeringskonkurrencer for Olympiade. I maraton er der ingen opdeling i divisioner, og der gives kun én opgave i hver konkurrence. I modsætning til Algoritme er den "korrekte" eller bedste algoritme ikke engang kendt af problemets forfatter. Ofte er der bedre og dårligere svar for hvert sæt af input, og et program, der altid finder det bedste svar inden for rimelig tid, er ukendt for problemets forfatter og eksisterer måske ikke. Deltageren skal skrive et program, der finder det bedst mulige svar på en given tid (typisk 10 sekunder). I nogle tilfælde er det nødvendigt at finde det rigtige svar på minimumstid. Der er andre muligheder.

Det tager normalt 1 eller 2 uger at fuldføre opgaven.

Deltagere er tilladt:

  • Prøveprøver. Programmet indsendt af deltageren er testet på 10 tidligere kendte datasæt. Deltageren modtager resultaterne af programmet, dets output og køretiden for hvert datasæt. Andre deltagere kan kun lære om den falske test. Du kan køre en prøvetest hvert 10. minut.
  • Gennemfør tests. Programmet er testet på 100 hemmelige datasæt, der er genereret tilfældigt før konkurrencestart, ens for alle deltagere og konstant gennem hele konkurrencen. Deltageren informeres kun om det samlede antal point, som programmet har opnået. Navnet på deltageren og de point, han opnåede i den sidste fulde test, indtastes i en tabel, der er tilgængelig for alle deltagere. En fuld test kan udføres en gang hver 1 time.

Efter afslutningen af ​​beslutningstagningen testes de programmer, der sendes til den fulde test (det sidste program taget fra hver deltager) på et stort antal (normalt 500) hemmelige, tilfældigt genererede datasæt, ens for alle deltagere. Deltagerne får pladser afhængigt af antallet af point, de har scoret.

Kort beskrivelse af nogle opgaver

Nedenfor er eksempler på opgaver, der tilbydes i maraton. Mange detaljer er udeladt fra eksemplerne.

  • subgraf isomorfisme. Givet en graf G og en graf H for hjørner, der er isomorfe i forhold til en undergraf i graf G. Find, hvilket toppunkt på graf G, der svarer til hvert hjørne af graf H. Hvis graf H er isomorf med to eller flere undergrafer i graf G, vil enhver af isomorfismerne er accepteret. Programmet modtager først en graf G og en graf H på 5 toppunkter, efter et rigtigt svar endnu en graf H på 6 toppunkter, efter et rigtigt svar en ny graf H på 7 toppunkter, og så videre. Pointene er lig med antallet af undergrafer, som programmet formåede at finde en isomorfi for. Programmets køretid er ikke mere end 10 sekunder. [1] Arkiveret 13. april 2012 på Wayback Machine
  • Cellulær automat. Reglerne for opførsel af en cellulær automat i et rektangulært område er angivet startpositionen, N og K. Find startpositionen, der adskiller sig fra den givne med højst N celler, sådan at efter K træder antallet af levende celler vil være så store som muligt. Punkterne er lig med forholdet mellem antallet af levende celler og det samlede areal af det rektangel, hvori den cellulære automat fungerer. [2] Arkiveret 25. maj 2014 på Wayback Machine
  • planhed. Givet graf. Find en flad udlægning af grafen, hvor hjørnerne er punkter i et 700×700 heltalsgitter, og kanterne er segmenter, der forbinder hjørnerne, således at antallet af skæringspunkter mellem kanterne er så lille som muligt. Punkterne er omvendt proportionale med antallet af kantskæringer. [3] Arkiveret 13. april 2012 på Wayback Machine

Bedømmelse

Topcoder er den første og mest prestigefyldte form for sportsprogrammering, der har et rangeringssystem baseret på deres præstationer i online konkurrencer. Baseret på det blev det lukkede hviderussiske site Test The Best og de russiske Codeforces lavet .

Bedømmelsessystemet opdeler deltagerne i følgende kategorier:

Gruppe farve Bedømmelse
hvid Deltagere, der aldrig optrådte
grå mindre end 900 point
Grønne 900-1199 point
Blå 1200-1499 point
gul 1500-2199 point
Rød 2200 point eller mere
Ledere ( engelsk  mål ) 3000 point eller mere

Algoritmekonkurrencedeltagere med en rating på mindst 1200 konkurrerer i første division. Alle andre er i den anden. Fra den 18. januar 2010 har omkring 800 af de stærkeste programmører den gule bedømmelse af Algoritmekonkurrencen, omkring 200 har den røde bedømmelse, og kun 17 mennesker i verden har "Target". [2]

I Design, Development og Marathon Matches er det endnu ikke lykkedes nogen at få Target-niveauet, og den røde gruppe består af højst 10 personer (i Udvikling - kun to).

Konkurrencer

De største af turneringerne er Topcoder Open (et uofficielt verdensmesterskab i programmering blandt professionelle) og Google Code Jam (indtil 2007, siden 2008 er det blevet afholdt af Google uafhængigt [3] ).
Ud over dem blev der indtil 2007 inklusive afholdt en turnering for studerende - TopCoder Collegiate Challenge. [4] .
Siden 2006-07 har der været afholdt individuelle kampe og en årlig turnering for skolebørn - TopCoder High School.

Noter

  1. Topcoder-job og -profil (downlink) . Yahoo! Hotte job . Hentet 29. november 2006. Arkiveret fra originalen 1. juni 2005. 
  2. TopCoder-statistik - Toprangerede algoritmekonkurrenter . Hentet 18. januar 2010. Arkiveret fra originalen 17. januar 2021.
  3. Code Jam-regler . Hentet 25. juni 2008. Arkiveret fra originalen 22. juni 2008.
  4. TCCC: En vanskelig beslutning . Hentet 25. juni 2008. Arkiveret fra originalen 19. februar 2011.

Links