{ "tasks": [ { "id": "26-Z1-1", "type": "open-data", "comment": "Kevin a magnety - triviální, lineární průchod pole", "requires": [ "label-1d-pole", "data" ], "title": "26-Z1-1" }, { "id": "26-Z1-2", "type": "open-data", "comment": "Piškvorky - detekce vítězství v piškvorkách, procházení 2D pole v různych směrech", "requires": [ "26-Z4-3" ] }, { "id": "26-Z1-3", "type": "open-data", "comment": "Zamilovaný dopis - triviální, procházení stringů po znacích a kontrola podmínek", "requires": [ "26-Z1-1", "label-retezce" ] }, { "id": "26-Z1-4", "type": "open-data", "comment": "Hroch v jezeře - BFS či jiné prohledávání, počítání velikosti komponent v 2D poli, ", "requires": [ "26-Z4-3", "label-grafy" ] }, { "id": "26-Z2-1", "type": "open-data", "comment": "Had z domina - triviální, linerání průchod pole a počítání, na kolika místech platí podmínka, vyžaduje práci se dvojicemi", "requires": [ "26-Z1-1", "label-1d-pole" ] }, { "id": "26-Z2-2", "type": "open-data", "comment": "SADO - triviální, procházení celých čísel v intervalu a kontrola podmínky", "requires": [] }, { "id": "26-Z2-3", "type": "open-data", "comment": "Šifrovaná zpráva - práce s řetězci, hledání mapování mezi písmenky (substitučka) a validace, že jinde substitučka funguje", "requires": [ "26-Z1-3", "label-retezce" ] }, { "id": "26-Z2-4", "type": "open-data", "comment": "Životně důležitá úloha - dostanu pole čísel, potřebuju v něm najít pravidelně se opakující výskyty hodnot, relativně složitá práce s poli, dvojcemi apod.", "requires": [ "26-Z2-1" ], "title": "26-Z2-4" }, { "id": "26-Z3-1", "type": "open-data", "comment": "Zámky labyrintu - hromada ifů, vhodné možná na code review, hledání čísla z trojice takového, že je trojice aritmetrická posloupnost", "requires": [] }, { "id": "26-Z3-2", "type": "open-data", "comment": "Čarodějova šifra - šifrování mřížkou, práce se stringy, rotace matice, vhodné na code review?, docela hard", "requires": [ "26-Z4-3", "29-Z3-2" ] }, { "id": "26-Z3-3", "type": "open-data", "comment": "Hádanka - triky s dělitelností devíti a rozkladem čísel, docela hard teorie", "requires": [] }, { "id": "26-Z3-4", "type": "open-data", "comment": "Tvar labyrintu - nejdelší cesta ve stromě, graf", "requires": [ "label-grafy-pracovni-poznamka" ] }, { "id": "26-Z4-1", "type": "open-data", "comment": "Vražedná čísla- WTF, teorie čísel, hard as fuck, divný", "requires": [] }, { "id": "26-Z4-2", "type": "open-data", "comment": "Sbírání vajíček - hledení mediánu, musí se to ale vymyslet, nejkratší cesta při chození tam a zpět", "requires": [] }, { "id": "26-Z4-3", "type": "open-data", "comment": "Hra Othello - link na 26-Z1-2, procházení 2D pole po různých směrech", "requires": [ "26-Z1-1", "label-2d-pole" ], "title": "26-Z4-3" }, { "id": "26-Z4-4", "type": "open-data", "comment": "Hlídači v labyrintu - policajti hlídající na grafu, konkrétně na stromě, rekurze, technicky asi až DP", "requires": [ "label-grafy-pracovni-poznamka" ] }, { "id": "27-Z2-1", "type": "open-data", "comment": "Závorky z cereálií - 2 průchody pole, závorky", "requires": [ "26-Z1-1", "label-1d-pole" ] }, { "id": "29-Z1-1", "type": "open-data", "comment": "Kevinova želva — triviální, průchod po 2D souřadnicích", "requires": [ "label-zelvy" ], "title": "29-Z1-1" }, { "id": "29-Z1-3", "type": "open-data", "comment": "Petrova statistika — ne úplně triviální, tvorba histogramu z pole", "requires": [ "27-Z2-1" ], "title": "29-Z1-3" }, { "id": "29-Z1-4", "type": "open-data", "comment": "Zuzčin výlet — DFS (topologické pořadí)", "requires": [ "label-grafy-pracovni-poznamka" ] }, { "id": "29-Z2-1", "type": "open-data", "comment": "Krocení zlé želvy — triviální, průchod po 2D souřadnicích, přímo navazuje na 29-Z1-1", "requires": [ "29-Z1-1" ] }, { "id": "29-Z3-1", "type": "open-data", "comment": "Želva na dvorku — spíš triviální, netriviální udělat efektivně (ale asi to není třeba pro úspěch), volně navazuje na 29-Z2-1 a 29-Z1-1, průchod po 2D souřadnicích, invalidní příkazy (směrem do překážky) ignorujeme", "requires": [ "26-Z4-3" ] }, { "id": "29-Z3-2", "type": "open-data", "comment": "Písemka z angličtiny — voser implementovat, easy dřevorubecký řešení, optimálně trie, což na Z IMHO hard", "requires": [ "26-Z2-3", "label-retezce" ] }, { "id": "29-Z3-3", "type": "open-data", "comment": "Šestková čísla — mega voser implementovat, spíš matematická úloha, převod dešitkových čísel do hacknutých římských", "requires": [] }, { "id": "29-Z4-3", "type": "open-data", "comment": "Želva v akváriu — malej voser, triviální, přímo navazuje na 29-Z2-1 a 29-Z1-1, průchod po 3D souřadnicích", "requires": [ "29-Z1-1", "29-Z2-1" ] }, { "id": "31-Z1-1", "type": "open-data", "requires": [], "comment": "úloha s odčítáním času", "title": "31-Z1-1" }, { "id": "31-Z1-2", "type": "open-data", "comment": "BFS (šachovnice, custom figurka, nejkratší cesta) ", "requires": [ "label-grafy-pracovni-poznamka" ] }, { "id": "31-Z1-4", "type": "open-data", "comment": "2D pole (až na poslední vstup), hešování (piškvorky) - navazuje na 26-Z1-2", "requires": [ "26-Z1-2" ], "title": "31-Z1-4" }, { "id": "31-Z3-2", "type": "open-data", "comment": "DFS (hledání cesty v grafu po písmenech)", "requires": [ "label-grafy-pracovni-poznamka" ] }, { "id": "31-Z3-3", "type": "open-data", "comment": "barvení bipartitního grafu (hledání partit), na vstupu hrany", "requires": [ "26-Z1-4", "label-grafy" ] }, { "id": "data", "type": "text", "comment": "...", "requires": [ "jak-resit-ulohy" ], "title": "Data a algoritmy", "htmlContent": "

Datové struktury

V programech potřebujeme nějak reprezentovat data o reálném světě. Paměť počítače je ale jen dlouhá sekvence bytů (malých čísel). Abychom mohli reprezentovat něco komplikovanějšího, skládáme si v paměti datové struktury. Technicky je to akorát hromada čísel, kterým přikládáme speciální význam. Pro potřeby programátora je ale často podstatnější ten samotný speciální význam, než hodnota čísel, kterými je zapsán.

Úlohy, které najdeš dále, se všechny zabývají nějakou datovou strukturou. Jsou uspořádány s rostoucí obtížností a pro pochopení složitějších datových struktur je často potřeba mít vštípené detaily struktury předchozí.

Algoritmy

Datové struktury jsou nám samotné k ničemu. K jejich smysluplnému využití potřebujeme nějaký důvod. Datovou strukturou jenom reprezentujeme nějaký stav světa. Proto v úlohách najdeš krom datových struktur také využití různých algoritmů - ověřených postupů, jak řešit nějaké druhy problémů.

" }, { "id": "jak-resit-ulohy", "type": "text", "requires": [ "start" ], "comment": "kecy o tom, jak se může řešit taková úloha", "title": "Jak řešit úlohy?", "htmlContent": "" }, { "id": "label-1d-pole", "type": "label", "comment": "...", "requires": [], "title": "Pole", "rotationAngle": 337 }, { "id": "label-2d-pole", "type": "label", "comment": "...", "requires": [], "title": "2D pole", "rotationAngle": 340 }, { "id": "label-grafy", "type": "label", "comment": "...", "requires": [], "title": "Grafy", "rotationAngle": 342 }, { "id": "label-grafy-pracovni-poznamka", "type": "text", "comment": "Chtělo by to grafy celé nějak přeuspořádat. Je to přeci jen dost široké téma.", "requires": [ "31-Z3-3" ], "title": "Grafy, ale neuspořádané", "htmlContent": "

undefined

" }, { "id": "label-retezce", "type": "label", "comment": "...", "requires": [], "title": "Textové řetězce", "rotationAngle": 326 }, { "id": "label-uvod", "type": "label", "comment": "...", "requires": [], "title": "Úvod" }, { "id": "label-zelvy", "type": "label", "comment": "...", "requires": [], "title": "Želvy", "rotationAngle": 43 }, { "id": "placeholder-kurz-programovani", "type": "text", "comment": "...", "requires": [ "programovani" ], "title": "placeholder-kurz-programovani", "htmlContent": "

Tady by měl začítat kurz programování

" }, { "id": "programovani", "type": "text", "comment": "...", "requires": [ "jak-resit-ulohy" ], "title": "Programování", "htmlContent": "

Počítače nemluví lidskou řečí. Aspoň zatím. Pokud jim chceme vysvětlit nějaký komplikovanější problém, potřebujeme mluvit správnou řečí - nějakým programovacím jazykem.

Jaký programovací jazyk použít?

Programovacích jazyků je více a každý se hodí na něco jiného. S roustoucími zkušenostmi se pravděpodobně naučíš přecházet mezi několika programovacími jazyky podle toho, jaký problém zrovna řešíš.

Pro řešení úloh Ti doporučujeme Python 3. Pokud se ho chceš naučit, můžeš zkusit projít kurzem, který jsme pro Tebe připravili.

" }, { "id": "start", "type": "text", "requires": [ "label-uvod" ], "comment": "úvodní kecy o tom, jak to celé funguje", "title": "Start", "htmlContent": "

Aktuálně je celý projekt v BETA režimu. Pokud najdeš libovolnou chybu nebo pokud Tě napadá, že by se dalo cokoliv vylepšit (a ideálně jak), dej prosím vědět Vaškovi a Standovi. Díky!

Vítej v našem novém kurzu!

Pokud tě napadá, jak by se tento projekt mohl jmenovat, dej nám vědět!

Co zde (časem) najdeš?

Co budu mít z toho, že budu úlohy zde řešit?

Něco se můžeš naučit a z toho můžeš mít dobrý pocit. Nic jiného teď neslibujeme. Splnit zde úlohu je to samé jako splnit ji ve cvičišti. Navíc ono k úlohám jsou většinou přístupná vzorová řešení, takže soutěžit zde nedává moc smysl.

" } ], "clusters": { "Triviální výpočet": [ "31-Z1-1" ], "Triviální průchod 1D pole": [ "26-Z1-1" ], "Triviální průchody 2D pole": [ "26-Z1-2", "26-Z4-3", "29-Z3-1", "31-Z1-4" ], "Želvy": [ "29-Z1-1", "29-Z2-1", "29-Z4-3" ], "Komplexnější práce s poli": [ "26-Z2-4", "29-Z1-3" ], "Práce s čísly": [ "26-Z2-2", "26-Z3-3", "26-Z4-1" ], "Práce s řetězci": [ "26-Z1-3", "26-Z2-3", "26-Z3-2", "29-Z3-2" ], "Grafy": [ "26-Z1-4", "26-Z4-4", "26-Z3-4", "29-Z1-4", "31-Z1-2", "31-Z3-2", "31-Z3-3" ], "Voser": [ "26-Z3-1", "29-Z3-3" ], "Nápad": [ "26-Z4-2" ] }, "positions": { "26-Z1-1": [ -101.57299041748047, 97.42442321777344 ], "26-Z1-2": [ -390.52777099609375, 223.46969604492188 ], "26-Z1-3": [ -108.57014465332031, 413.4291076660156 ], "26-Z1-4": [ -721.7426147460938, 242.6431427001953 ], "26-Z2-1": [ -40.54367446899414, 136.4449920654297 ], "26-Z2-2": [ -373, -92 ], "26-Z2-3": [ -170.55516052246094, 448.4372253417969 ], "26-Z2-4": [ -51.54255294799805, 201.43836975097656 ], "26-Z3-1": [ 446, -160 ], "26-Z3-2": [ -384.5406188964844, 551.4302368164062 ], "26-Z3-3": [ 485, -81 ], "26-Z3-4": [ -798.0394897460938, 422.3702087402344 ], "26-Z4-1": [ -551.4441557449455, -38.58561957493338 ], "26-Z4-2": [ -633.6757896792913, 1.4284188628810082 ], "26-Z4-3": [ -332.5494689941406, 180.4159698486328 ], "26-Z4-4": [ -618.3238525390625, 418.6714782714844 ], "27-Z2-1": [ -152.5541534423828, 146.43653869628906 ], "29-Z1-1": [ 152, 434 ], "29-Z1-3": [ -166.53085327148438, 205.43795776367188 ], "29-Z1-4": [ -995.0092163085938, 426.0633850097656 ], "29-Z2-1": [ 231, 499 ], "29-Z3-1": [ -267.55303955078125, 230.44407653808594 ], "29-Z3-2": [ -241.55032348632812, 488.43450927734375 ], "29-Z3-3": [ 470, -213 ], "29-Z4-3": [ 119, 511 ], "31-Z1-1": [ -127, -262 ], "31-Z1-2": [ -698.3235473632812, 428.5255126953125 ], "31-Z1-4": [ -430.5250549316406, 278.4659423828125 ], "31-Z3-2": [ -894.0621948242188, 424.8323059082031 ], "31-Z3-3": [ -809.14794921875, 274.6507263183594 ], "data": [ -29, 2 ], "jak-resit-ulohy": [ 43, -98 ], "label-1d-pole": [ -120.56800842285156, 53.46208953857422 ], "label-2d-pole": [ -350.5476379394531, 141.41993713378906 ], "label-grafy": [ -789.450927734375, 214.32875061035156 ], "label-grafy-pracovni-poznamka": [ -826.3731079101562, 359.58056640625 ], "label-retezce": [ -209.55250549316406, 410.4397888183594 ], "label-uvod": [ 42, -243 ], "label-zelvy": [ 205, 407 ], "placeholder-kurz-programovani": [ 452, 62 ], "programovani": [ 144, 2 ], "start": [ 38, -176 ] } }