SPOJ - SPOJ
tento článek příliš spoléhá na Reference na primární zdroje.Srpna 2017) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
SPOJ (Sphere Online Judge) je online soudce systém s více než 315 000 registrovanými uživateli a více než 20 000 problémy. Úkoly připravuje komunita tvůrců problémů nebo jsou převzaty z předchozích programátorských soutěží. SPOJ umožňuje pokročilým uživatelům organizovat soutěže podle jejich vlastních pravidel a zahrnuje také fórum, kde mohou programátoři diskutovat o tom, jak vyřešit konkrétní problém.
Kromě anglický jazyk SPOJ také nabízí svůj obsah v polština, portugalština a vietnamština jazyky. Řešení problémů lze předložit ve více než 40 programovacích programech jazyky, včetně esoterických, prostřednictvím Sphere Engine. Provozuje jej polská společnost Sphere Research Labs.[1]
Web je považován za automatizovaného hodnotitele programů zasílaných uživateli i za online vzdělávací platformu, která pomáhá lidem porozumět a řešit výpočetní úkoly.[2] Umožňuje také studentům porovnávat paradigmata a přístupy s širokou škálou jazyků.
Dějiny
Tento systém byl původně vytvořen pro uplatnění online soudce ve výuce studentů. V zásadě se zaměřil na studenty a lektory univerzit a členy širší programátorské komunity, kteří se zajímali o algoritmy a programovací soutěže.
Cíle
Zaměřila se na různé uživatele pro různé účely, například:[3]
- Pro mladé lidi a začínající programátory rozvíjet porozumění algoritmům.
- Studenti univerzit dostávají příležitost dělat si domácí úkoly poctivě, důkladně a bez podvádění.
- Profesionálové soutěže ACM mohou řešit úkoly, aniž by byli omezeni omezeními příliš malého počtu programovacích jazyků nebo nepohodlným uživatelským rozhraním.
- Nadšenci funkčního nebo objektově orientovaného programování mohou řešit soutěžní problémy ve svém oblíbeném jazyce.
- Kdokoli, kdo je ochoten sdílet zajímavý úkol se zbytkem komunity SPOJ, může tak učinit téměř automaticky (stačí jeden e-mail správcům, kteří požadují oprávnění tvůrce problémů),
- Kdokoli, kdo si přeje uspořádat programátorskou soutěž, s téměř jakýmikoli pravidly, o kterých se rozhodne, může tak učinit kdykoli si zvolí, bez pomoci správců systému.
Kategorie problémů
Archivované problémy v SPOJ jsou rozděleny do 5 kategorií:[4]
- Klasický: Jedná se o binární skórované problémy. Přijato nebo Špatná odpověď[Citace je zapotřebí ]
- Výzva: Ty umožňují uživatelům předkládat horší nebo lepší řešení. Na konkrétní problém neexistují definitivní odpovědi
- Částečný: Jsou podobné problémům s výzvami, ale mají vzdělávací účel
- Tutorial: Stejně jako klasické problémy, ale jednodušší, slouží i pro vzdělávací účely - například zahrnující široce známý algoritmus
- Hádanka: Problémy, které obsahují hádanky
Aby se problém stal ještě náročnějším, mohou být přihlášky omezeny. To zahrnuje dostupnost jazyků (např. Pouze esoterické jazyky) a výpočetní čas.
Soudě
Klastry
Příspěvky jsou hodnoceny na jednom shluk:[5]
- Cube (Intel Xeon E3-1200 v5): Stránka uvádí, že „tento nový klastr se skládá z moderních a rychlých procesorů Intel Xeon E3-1220 v5. Na Cube budou vaše podání běžet 30 až 50krát rychleji než na Pyramid, takže můžete očekávat, že pokud své řešení otestujete doma, pak bude mít podobný čas spuštění na SPOJ. V tomto clusteru je limit paměti pro odeslání 1536 MB. " Klastr Pyramid byl deaktivován.
Programy jsou kontrolovány buď porovnáním se známou správnou odpovědí, nebo spuštěním vyhrazeného rozhodčího kódu, jedinečného pro každý problém.[2] To je stále více nezbytné, když může na složitější problémy existovat více odpovědí. Díky použití počítače je značení konzistentní, spravedlivé a může měřit účinnost v reálném čase ve srovnání s lidským úsudkem.
Aby bylo zajištěno, že systém běží efektivně, příkazy Linuxu RLIMIT_CPU zastaví, aby špatně navržené testy nepůsobily na ostatní. Systémové volání chroot () aplikuje omezení na spouštění programů pomocí karantén souborového systému: například příkaz sleep () není povolen, protože by snížil dostupnou paměť.
Přístupná, bezplatná a objektivní povaha webových stránek umožňuje studentům získat logické a designové zkušenosti založené na předchozích úspěších. Systém však nevyhodnocuje kvalitu kódu, dokumentaci ani jiné subjektivnější charakteristiky, které mohou být pro aplikace v reálném světě důležitější.
Po odeslání se uživateli řekne, zda kód během spuštění nebo kompilace způsobil chybu; byl překročen časový limit; nesprávná odpověď byla na výstupu nebo byla správná. Odpovědi na problémy s výzvami jsou doprovázeny skóre (viz níže).
Bodování
Skóre je uvedeno na základě kategorie, ve které jsou problémy rozděleny.[6]
- Klasický: Skóre pro jeden problém je bodů.
- Výzva: Skóre má dvě následující kritéria:
- za nejlepší skóre v jakékoli výzvě: 3 body,
- za jakékoli nižší skóre ve výzvě: (skóre uživatele vzhledem k nejvyššímu skóre) body.
- Částečný: 0 bodů
- Tutorial: 0 bodů
- Hádanka: 0 bodů
Skóre pro kategorii „výzva“ jsou obvykle velikost podání v bajtech, i když se může lišit. Může to být například počet správných desetinných míst konstanty π.
Poznámka: SPOJ často mění vzorce používané pro výpočet skóre
Programovací soutěže
SPOJ se používá jako platforma pro širokou škálu soutěží, od místní po mezinárodní úroveň a od krátkých hodinových problémů až po celoroční ligy. Účastníci obvykle mluví různými jazyky, takže stránky zajišťují rovnější podmínky a snižují pracovní zátěž organizátorů.[2]
Kritika
Uživatelé online soudních systémů nemají žádnou motivaci k dokumentaci a vytváření dobře strukturovaného kódu, což by je mohlo méně připravovat na typičtější aplikace výpočetní techniky mimo soutěže.[2]
Výsledky studie provedené v Gdaňská technická univerzita[2] naznačují, že termíny dané v univerzitních situacích, včetně bonusových a trestných bodů v závislosti na tom, kdy je úkol odevzdán, mají tendenci být drsné vůči studentům, kteří nejsou dobře organizovaní, i když je předložen stejný kód. To má smíšené motivační účinky na studenty, což některé povzbuzuje k dodržování termínů, zatímco ostatní demotivují. Stejná studie naznačuje, že používání online soudních systémů vede ke snížení komunikace mezi studenty a zaměstnanci. V případě zaměstnanců s vysokou pedagogickou zátěží však toto snížení může zaměstnancům umožnit věnovat více času studentům s obtížemi, čímž se eliminují administrativní náklady spojené s hodnocením a čas strávený diskusemi se studenty, kteří nepotřebují pomoc.
Jazyky
SPOJ podporuje přibližně 60 jazyků, ve kterých mohou uživatelé předkládat svá řešení. Oni jsou:
Ada Assembler, AWK, Bash, Brainfuck, C, C ++ a C99 přísný, C#, Clojure, Společný Lisp, D, Doc (bez testování), Erlang, Fortran, F#, Jít, Haskell, Ikona, Intercal, Sklenice, Jáva, JavaScript, Lisp, Lua, Nemerle, Pěkný, Node.js, OCaml, Pascal, Pdf, Perl, PHP, Štika, PostScript, Prolog, Krajta, Rubín, Rez, Scala, Systém, sed, Pokec, Tcl, Tecs, Text a Mezery.
Viz také
- Codeforces
- Google Code Jam
- Topcoder
- ACM International Collegiate Programming Contest (ICPC)
- UVa Online soudce
- Projekt Euler
Reference
- ^ „Právní informace o laboratořích Sphere Research Labs“. Sphere Research Labs. Citováno 2015-06-21.
- ^ A b C d E Kosowski, Adrian; Malafiejski, Michal; Noinski, Tomasz (14.04.2008). Pokroky v učení založeném na webu - ICWL 2007: 6. mezinárodní konference, Edinburgh, Velká Británie, 15. – 17. Srpna 2007, revidované příspěvky. Springer Science & Business Media. p. 344. ISBN 9783540781387.
- ^ Kosowski, Adrian (3. září 2004). „Co je SPOJ's _purpose_?“. SPOJ. Citováno 22. září 2014.
- ^ „PROBLÉMY“. SPOJ. Citováno 22. září 2014.
- ^ „Klastry“. SPOJ. Citováno 24. září 2017.
- ^ „Statistiky uživatelů“. SPOJ. Citováno 22. září 2014.