Topcoder

Společnost Topcoder Inc.
Typ Korporace
Základna duben 2001
Umístění USA , Connecticut , Glastonbury
Průmysl IT personální
vývoj Vývoj softwaru
Outsourcingové služby
Počet zaměstnanců 75 (2006) [1]
webová stránka www.topcoder.com

Topcoder  je společnost, která pořádá soutěže ve sportovním programování . Na rozdíl od ACM International Collegiate Programming Contest jsou všechny soutěže individuální.

Vytvořeno v dubnu 2001. V červenci 2008 to bylo více než 160 000 uživatelů, z nichž asi 28 000 se alespoň jednou zúčastnilo Algoritmické soutěže.

Druhy soutěží

Algorithms ( angl.  Algorithm Competition )

Nejoblíbenějším typem turnajů je soutěž o rychlé řešení algoritmických problémů (podobně jako školní a studentské programátorské soutěže). Spočívá v tom, že každý účastník dostane 3 úkoly, různé složitostí, zařazené do 3 úrovní. Každý úkol má svou maximální hodnotu v bodech. Obvykle 250, 500 a 1000. Body se udělují pouze za řešení, která jsou uznána jako správná, na dílčí řešení se nepřihlíží. Před začátkem soutěže jsou účastníci zařazeni do virtuálních místností (až 20 osob).

Takové zápasy, nazývané SRM (Single Round Match), se konají přibližně jednou za dva týdny. Kromě toho se konají každoroční turnaje. Zápas se skládá ze tří hlavních fází – Kódování, Výzva a Testování systému.

Fáze programování  Fáze kódování

V první fázi se účastníci pokusí ve stanoveném čase vyřešit tři jim navržené úkoly, obvykle odhadované na 250, 500 a 1000 bodů. Řešením je vytvořit třídu uvedenou v podmínce a implementovat metodu uvedenou v podmínce, přičemž projdou všemi předem připravenými testy. Přispěvatelé mohou psát řešení v jednom z následujících jazyků: C++ , C# , Java , VB.NET nebo Python . Počet bodů za vyřešený problém závisí nelineárně na čase odeslání konečného řešení: čím později, tím méně bodů. Za každé opětovné odevzdání se účtuje 10 % z ceny úkolu. Počet bodů nesmí být nižší než 30 % ceny úkolu.

Délka prohlídky v běžných zápasech ( angl.  Single Round Match , zkráceně SRM), stejně jako kvalifikačních soutěžích turnajů ( angl.  Online Elimination Rounds ) je 75 minut. Ve finále na místě ( ang.  Onsite Events ) trvá první fáze 85 minut.

Fáze  konkurenčního testování Náročná fáze

Ve druhé fázi se účastníci snaží najít test (možnost vstupních dat), na kterém budou řešení jeho konkurentů (kteří jsou ve stejné virtuální místnosti) fungovat špatně. Zároveň je povoleno prohlížet zdrojový kód, ale je nemožné (nemožné) spouštět konkurenční programy. Každý úspěšný přístup dává 50 bodů a neúspěšný 25 bodů. Pokud byl přístup úspěšný, lze test přidat do sady testů použité v další fázi. Doba trvání této fáze je 15 minut ve všech zápasech kromě finále head-to-head (10 minut). Účastníkovi je zakázáno pokoušet se sestavit test, na kterém jiná řešení nefungují, pokud jeho skóre není pozitivní.

Závěrečná testovací fáze  Fáze testování systému

Ve třetí fázi jsou testována všechna řešení všech účastníků, která nebyla podle výsledků druhé fáze shledána jako nesprávná. Formují se konečné výsledky zápasů.

Výsledky

Klasifikace účastníků a jejich konečné umístění na místech je určeno konečným počtem bodů, které účastníci mají. Účastníci s více body dostávají vyšší místa. V případě rovnosti bodů všichni účastníci s daným počtem bodů zaujímají (sdílejí) stejné místo.

Pokud během soutěže nedošlo k žádným technickým poruchám, hodnocení se přepočítává pro všechny účastníky.

Soutěž designu a   editovat

Jedná se o typ soutěže nejbližší průmyslovému programování. Účastní se jich dvojice programátorů. První napíše podrobnou specifikaci pro nějakou komponentu objednanou společností třetí strany a druhá ji implementuje v .NET nebo Javě. Práci hodnotí několik porot a podle jejich posouzení se stanoví výsledné skóre.

Marathon ( anglická  soutěž v maratonu )

V maratonech účastníci řeší složitější a nestandardní problémy než v jiných typech soutěží v programování olympiád. V maratonech není rozdělení do divizí a v každé soutěži je zadán pouze jeden úkol. Na rozdíl od Algorithmu nezná „správný“ nebo nejlepší algoritmus ani autor problému. Často pro každou sadu vstupů existují lepší a horší odpovědi a program, který vždy v rozumném čase najde nejlepší odpověď, je autorovi problému neznámý a možná ani neexistuje. Účastník musí napsat program, který najde nejlepší možnou odpověď v daném čase (obvykle 10 sekund). V některých případech je nutné najít správnou odpověď v minimálním čase. Jsou i jiné možnosti.

Dokončení úkolu obvykle trvá 1 nebo 2 týdny.

Účastníci mají povoleno:

  • Zkušební testy. Program předložený účastníkem je testován na 10 dříve známých souborech dat. Účastník obdrží výsledky programu, jeho výstup a dobu běhu pro každý soubor dat. Ostatní účastníci se mohou dozvědět pouze o skutečnosti simulovaného testu. Zkušební test můžete spustit každých 10 minut.
  • Kompletní testy. Program je testován na 100 tajných souborech dat náhodně generovaných před začátkem soutěže, stejných pro všechny účastníky a konstantních po celou dobu soutěže. Účastník je informován pouze o celkovém počtu bodů, které program získal. Jméno účastníka a body, které získal v posledním úplném testu, se zapisují do tabulky dostupné všem účastníkům. Úplný test lze provést jednou za 1 hodinu.

Po dokončení rozhodování jsou programy zaslané do úplného testu (poslední program odebraný od každého účastníka) testovány na velkém počtu (obvykle 500) tajných, náhodně generovaných souborů dat, stejných pro všechny účastníky. Účastníci obdrží umístění v závislosti na počtu bodů, které získali.

Stručný popis některých úkolů

Níže jsou uvedeny příklady úkolů nabízených v maratonech. Mnoho detailů je z příkladů vynecháno.

  • izomorfismus podgrafu. Je-li dán graf G a graf H vrcholů izomorfních s podgrafem grafu G. Zjistěte, který vrchol grafu G odpovídá každému vrcholu grafu H. Je-li graf H izomorfní ke dvěma nebo více podgrafům grafu G, některý z izomorfismů je přijat. Program obdrží nejprve graf G a graf H o 5 vrcholech, po správné odpovědi další graf H o 6 vrcholech, po správné odpovědi nový graf H o 7 vrcholech a tak dále. Body se rovnají počtu podgrafů, pro které se programu podařilo najít izomorfismus. Doba běhu programu není delší než 10 sekund. [1] Archivováno 13. dubna 2012 na Wayback Machine
  • Buněčný automat. Jsou dána pravidla pro chování celulárního automatu v obdélníkové oblasti, počáteční poloha, N a K. Najděte počáteční polohu, která se od dané neliší o více než N buněk tak, že po K krocích bude počet žijících buňky budou co největší. Body se rovnají poměru počtu živých buněk k celkové ploše obdélníku, ve kterém celulární automat pracuje. [2] Archivováno 25. května 2014 na Wayback Machine
  • rovinnost. Daný graf. Najděte ploché rozložení grafu, ve kterém jsou vrcholy body v celočíselné mřížce 700×700 a hrany jsou segmenty spojující vrcholy tak, aby počet průsečíků hran byl co nejmenší. Body jsou nepřímo úměrné počtu průsečíků hran. [3] Archivováno 13. dubna 2012 na Wayback Machine

Hodnocení

Topcoder je první a nejprestižnější forma sportovního programování, která má systém hodnocení založený na jejich výkonu v online soutěžích. Na jejím základě vznikl uzavřený běloruský web Test The Best a ruský Codeforces .

Systém hodnocení rozděluje účastníky do následujících kategorií:

Barva skupiny Hodnocení
Bílý Účastníci, kteří nikdy nevystupovali
šedá méně než 900 bodů
Zelenina 900-1199 bodů
Modrý 1200–1499 bodů
žlutá 1500–2199 bodů
Červené 2200 bodů nebo více
Lídři ( cíl v angličtině  ) 3000 bodů nebo více

Účastníci soutěže algoritmů s hodnocením alespoň 1200 soutěží v první divizi. Všichni ostatní jsou ve druhém. K 18. lednu 2010 má asi 800 nejsilnějších programátorů žluté hodnocení Algorithm Competition, asi 200 červené a pouze 17 lidí na světě má "Target". [2]

V Design, Development a Marathon Matches se ještě nikomu nepodařilo dosáhnout cílové úrovně a červenou skupinu tvoří maximálně 10 lidí (ve Development - pouze dva).

Soutěže

Největší z turnajů jsou Topcoder Open (neoficiální mistrovství světa v programování mezi profesionály) a Google Code Jam (do roku 2007, od roku 2008 jej pořádá samostatně Google [3] ).
Kromě nich se do roku 2007 včetně konal turnaj pro studenty - TopCoder Collegiate Challenge. [4] .
Od roku 2006-07 se konají jednotlivá utkání a každoroční turnaj pro školáky - TopCoder High School.

Poznámky

  1. Topcoder Jobs and Profile (downlink) . Yahoo! Horké práce . Získáno 29. listopadu 2006. Archivováno z originálu 1. června 2005. 
  2. Statistika TopCoder – Nejlépe hodnocení konkurenti algoritmů . Získáno 18. ledna 2010. Archivováno z originálu 17. ledna 2021.
  3. Pravidla Code Jam . Získáno 25. června 2008. Archivováno z originálu 22. června 2008.
  4. TCCC: Obtížné rozhodnutí . Získáno 25. června 2008. Archivováno z originálu 19. února 2011.

Odkazy