Přesunuto na GitHub https://github.com/ksp/kurz
https://ksp.mff.cuni.cz/kurz
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
573 lines
19 KiB
573 lines
19 KiB
{
|
|
"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",
|
|
"position": [
|
|
-101.57299041748047,
|
|
97.42442321777344
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
-390.52777099609375,
|
|
223.46969604492188
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
-108.57014465332031,
|
|
413.4291076660156
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
-721.7426147460938,
|
|
242.6431427001953
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
-40.54367446899414,
|
|
136.4449920654297
|
|
]
|
|
},
|
|
{
|
|
"id": "26-Z2-2",
|
|
"type": "open-data",
|
|
"comment": "SADO - triviální, procházení celých čísel v intervalu a kontrola podmínky",
|
|
"requires": [],
|
|
"position": [
|
|
-373,
|
|
-92
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
-170.55516052246094,
|
|
448.4372253417969
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"position": [
|
|
-51.54255294799805,
|
|
201.43836975097656
|
|
]
|
|
},
|
|
{
|
|
"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": [],
|
|
"position": [
|
|
446,
|
|
-160
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
-384.5406188964844,
|
|
551.4302368164062
|
|
]
|
|
},
|
|
{
|
|
"id": "26-Z3-3",
|
|
"type": "open-data",
|
|
"comment": "Hádanka - triky s dělitelností devíti a rozkladem čísel, docela hard teorie",
|
|
"requires": [],
|
|
"position": [
|
|
485,
|
|
-81
|
|
]
|
|
},
|
|
{
|
|
"id": "26-Z3-4",
|
|
"type": "open-data",
|
|
"comment": "Tvar labyrintu - nejdelší cesta ve stromě, graf",
|
|
"requires": [
|
|
"label-grafy-pracovni-poznamka"
|
|
],
|
|
"position": [
|
|
-798.0394897460938,
|
|
422.3702087402344
|
|
]
|
|
},
|
|
{
|
|
"id": "26-Z4-1",
|
|
"type": "open-data",
|
|
"comment": "Vražedná čísla- WTF, teorie čísel, hard as fuck, divný",
|
|
"requires": [],
|
|
"position": [
|
|
-551.4441557449455,
|
|
-38.58561957493338
|
|
]
|
|
},
|
|
{
|
|
"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": [],
|
|
"position": [
|
|
-633.6757896792913,
|
|
1.4284188628810082
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"position": [
|
|
-332.5494689941406,
|
|
180.4159698486328
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
-618.3238525390625,
|
|
418.6714782714844
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
-152.5541534423828,
|
|
146.43653869628906
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"position": [
|
|
152,
|
|
434
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"position": [
|
|
-166.53085327148438,
|
|
205.43795776367188
|
|
]
|
|
},
|
|
{
|
|
"id": "29-Z1-4",
|
|
"type": "open-data",
|
|
"comment": "Zuzčin výlet — DFS (topologické pořadí)",
|
|
"requires": [
|
|
"label-grafy-pracovni-poznamka"
|
|
],
|
|
"position": [
|
|
-995.0092163085938,
|
|
426.0633850097656
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
231,
|
|
499
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
-267.55303955078125,
|
|
230.44407653808594
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
-241.55032348632812,
|
|
488.43450927734375
|
|
]
|
|
},
|
|
{
|
|
"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": [],
|
|
"position": [
|
|
470,
|
|
-213
|
|
]
|
|
},
|
|
{
|
|
"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"
|
|
],
|
|
"position": [
|
|
119,
|
|
511
|
|
]
|
|
},
|
|
{
|
|
"id": "31-Z1-1",
|
|
"type": "open-data",
|
|
"requires": [],
|
|
"comment": "úloha s odčítáním času",
|
|
"title": "31-Z1-1",
|
|
"position": [
|
|
-127,
|
|
-262
|
|
]
|
|
},
|
|
{
|
|
"id": "31-Z1-2",
|
|
"type": "open-data",
|
|
"comment": "BFS (šachovnice, custom figurka, nejkratší cesta) ",
|
|
"requires": [
|
|
"label-grafy-pracovni-poznamka"
|
|
],
|
|
"position": [
|
|
-698.3235473632812,
|
|
428.5255126953125
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"position": [
|
|
-430.5250549316406,
|
|
278.4659423828125
|
|
]
|
|
},
|
|
{
|
|
"id": "31-Z3-2",
|
|
"type": "open-data",
|
|
"comment": "DFS (hledání cesty v grafu po písmenech)",
|
|
"requires": [
|
|
"label-grafy-pracovni-poznamka"
|
|
],
|
|
"position": [
|
|
-894.0621948242188,
|
|
424.8323059082031
|
|
]
|
|
},
|
|
{
|
|
"id": "31-Z3-3",
|
|
"type": "open-data",
|
|
"comment": "barvení bipartitního grafu (hledání partit), na vstupu hrany",
|
|
"requires": [
|
|
"26-Z1-4",
|
|
"label-grafy"
|
|
],
|
|
"position": [
|
|
-809.14794921875,
|
|
274.6507263183594
|
|
]
|
|
},
|
|
{
|
|
"id": "data",
|
|
"type": "text",
|
|
"comment": "...",
|
|
"requires": [
|
|
"jak-resit-ulohy"
|
|
],
|
|
"title": "Data a algoritmy",
|
|
"htmlContent": "<h2>Datové struktury</h2><p>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 <strong>datové struktury.</strong> 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.</p><p>Ú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í.</p><h2>Algoritmy</h2><p>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ů.</p>",
|
|
"position": [
|
|
-29,
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"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": "",
|
|
"position": [
|
|
43,
|
|
-98
|
|
]
|
|
},
|
|
{
|
|
"id": "label-1d-pole",
|
|
"type": "label",
|
|
"comment": "...",
|
|
"requires": [],
|
|
"title": "Pole",
|
|
"rotationAngle": 337,
|
|
"position": [
|
|
-120.56800842285156,
|
|
53.46208953857422
|
|
]
|
|
},
|
|
{
|
|
"id": "label-2d-pole",
|
|
"type": "label",
|
|
"comment": "...",
|
|
"requires": [],
|
|
"title": "2D pole",
|
|
"rotationAngle": 340,
|
|
"position": [
|
|
-350.5476379394531,
|
|
141.41993713378906
|
|
]
|
|
},
|
|
{
|
|
"id": "label-grafy",
|
|
"type": "label",
|
|
"comment": "...",
|
|
"requires": [],
|
|
"title": "Grafy",
|
|
"rotationAngle": 342,
|
|
"position": [
|
|
-789.450927734375,
|
|
214.32875061035156
|
|
]
|
|
},
|
|
{
|
|
"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": "<p>undefined</p>",
|
|
"position": [
|
|
-826.3731079101562,
|
|
359.58056640625
|
|
]
|
|
},
|
|
{
|
|
"id": "label-retezce",
|
|
"type": "label",
|
|
"comment": "...",
|
|
"requires": [],
|
|
"title": "Textové řetězce",
|
|
"rotationAngle": 326,
|
|
"position": [
|
|
-209.55250549316406,
|
|
410.4397888183594
|
|
]
|
|
},
|
|
{
|
|
"id": "label-uvod",
|
|
"type": "label",
|
|
"comment": "...",
|
|
"requires": [],
|
|
"title": "Úvod",
|
|
"position": [
|
|
42,
|
|
-243
|
|
]
|
|
},
|
|
{
|
|
"id": "label-zelvy",
|
|
"type": "label",
|
|
"comment": "...",
|
|
"requires": [],
|
|
"title": "Želvy",
|
|
"rotationAngle": 43,
|
|
"position": [
|
|
205,
|
|
407
|
|
]
|
|
},
|
|
{
|
|
"id": "placeholder-kurz-programovani",
|
|
"type": "text",
|
|
"comment": "...",
|
|
"requires": [
|
|
"programovani"
|
|
],
|
|
"title": "placeholder-kurz-programovani",
|
|
"htmlContent": "<p>Tady by měl začítat kurz programování</p>",
|
|
"position": [
|
|
452,
|
|
62
|
|
]
|
|
},
|
|
{
|
|
"id": "programovani",
|
|
"type": "text",
|
|
"comment": "...",
|
|
"requires": [
|
|
"jak-resit-ulohy"
|
|
],
|
|
"title": "Programování",
|
|
"htmlContent": "<p>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 <strong>programovacím jazykem.</strong></p><h2>Jaký programovací jazyk použít?</h2><p>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šíš.</p><p>Pro řešení úloh Ti doporučujeme <strong>Python 3</strong>. Pokud se ho chceš naučit, můžeš zkusit projít kurzem, který jsme pro Tebe připravili.</p>",
|
|
"position": [
|
|
144,
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"id": "start",
|
|
"type": "text",
|
|
"requires": [
|
|
"label-uvod"
|
|
],
|
|
"comment": "úvodní kecy o tom, jak to celé funguje",
|
|
"title": "Start",
|
|
"htmlContent": "<p>Aktuálně je celý projekt v <strong>BETA režimu</strong>. 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!</p><h2>Vítej v našem novém kurzu!</h2><p>Pokud tě napadá, jak by se tento <strong>projekt mohl jmenovat</strong>, dej nám vědět!</p><h3>Co zde (časem) najdeš?</h3><ul><li>Základní kurz programování (dříve byl samostatně)</li><li>Roztříděné úlohy ze starších ročníků a sérií</li><li>Staré seriály</li><li>…a další úlohy, které jsme odněkud vyhrabali nebo nově vyrobili</li></ul><h3>Co budu mít z toho, že budu úlohy zde řešit?</h3><p>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.</p>",
|
|
"position": [
|
|
38,
|
|
-176
|
|
]
|
|
}
|
|
],
|
|
"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"
|
|
]
|
|
}
|
|
}
|
|
|