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.
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ázeVe 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émuVe 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ýsledkyKlasifikace úč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.
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.
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:
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.
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).
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.