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.
626 lines
22 KiB
626 lines
22 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": "Kevin a magnety",
|
|
"position": [
|
|
-165.5925064086914,
|
|
75.26382446289062
|
|
],
|
|
"taskReference": "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"
|
|
],
|
|
"position": [
|
|
-538.6227111816406,
|
|
223.0074005126953
|
|
],
|
|
"taskReference": "26-Z1-2",
|
|
"title": "Piškvorky"
|
|
},
|
|
{
|
|
"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": [
|
|
-143.04217529296875,
|
|
406.042236328125
|
|
],
|
|
"taskReference": "26-Z1-3",
|
|
"title": "Zamilovaný dopis"
|
|
},
|
|
{
|
|
"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": [
|
|
-811.6162109375,
|
|
282.03977966308594
|
|
],
|
|
"taskReference": "26-Z1-4",
|
|
"title": "Hroch v jezeře"
|
|
},
|
|
{
|
|
"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": [
|
|
-70.56319046020508,
|
|
120.35980987548828
|
|
],
|
|
"taskReference": "26-Z2-1",
|
|
"title": "Had z domina"
|
|
},
|
|
{
|
|
"id": "26-Z2-2",
|
|
"type": "open-data",
|
|
"comment": "SADO - triviální, procházení celých čísel v intervalu a kontrola podmínky",
|
|
"requires": [],
|
|
"position": [
|
|
1167.1616821289062,
|
|
208.39923095703125
|
|
],
|
|
"taskReference": "26-Z2-2",
|
|
"title": "SADO"
|
|
},
|
|
{
|
|
"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": [
|
|
-218.5698013305664,
|
|
452.1306457519531
|
|
],
|
|
"taskReference": "26-Z2-3",
|
|
"title": "Šifrovaná zpráva"
|
|
},
|
|
{
|
|
"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": "Životně důležitá úloha",
|
|
"position": [
|
|
-44.170326232910156,
|
|
178.35317993164062
|
|
],
|
|
"taskReference": "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": [],
|
|
"position": [
|
|
1205.6161193847656,
|
|
327.53318786621094
|
|
],
|
|
"taskReference": "26-Z3-1",
|
|
"title": "Zámky labyrintu"
|
|
},
|
|
{
|
|
"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": [
|
|
-431.3240966796875,
|
|
546.5056457519531
|
|
],
|
|
"taskReference": "26-Z3-2",
|
|
"title": "Čarodějova šifra"
|
|
},
|
|
{
|
|
"id": "26-Z3-3",
|
|
"type": "open-data",
|
|
"comment": "Hádanka - triky s dělitelností devíti a rozkladem čísel, docela hard teorie",
|
|
"requires": [],
|
|
"position": [
|
|
1244.6161193847656,
|
|
406.53318786621094
|
|
],
|
|
"taskReference": "26-Z3-3",
|
|
"title": "Hádanka"
|
|
},
|
|
{
|
|
"id": "26-Z3-4",
|
|
"type": "open-data",
|
|
"comment": "Tvar labyrintu - nejdelší cesta ve stromě, graf",
|
|
"requires": [
|
|
"label-grafy-pracovni-poznamka"
|
|
],
|
|
"position": [
|
|
-890.9130859375,
|
|
501.766845703125
|
|
],
|
|
"taskReference": "26-Z3-4",
|
|
"title": "Tvar labyrintu"
|
|
},
|
|
{
|
|
"id": "26-Z4-1",
|
|
"type": "open-data",
|
|
"comment": "Vražedná čísla- WTF, teorie čísel, hard as fuck, divný",
|
|
"requires": [],
|
|
"position": [
|
|
1087.2091645675546,
|
|
270.43162285670724
|
|
],
|
|
"taskReference": "26-Z4-1",
|
|
"title": "Vražedná čísla"
|
|
},
|
|
{
|
|
"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": [
|
|
1004.9775306332087,
|
|
310.44566129452164
|
|
],
|
|
"taskReference": "26-Z4-2",
|
|
"title": "Sbírání vajíček"
|
|
},
|
|
{
|
|
"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": "Hra Othello",
|
|
"position": [
|
|
-480.6444091796875,
|
|
179.95367431640625
|
|
],
|
|
"taskReference": "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"
|
|
],
|
|
"position": [
|
|
-675.1974487304688,
|
|
442.068115234375
|
|
],
|
|
"taskReference": "26-Z4-4",
|
|
"title": "Hlídači v labyrintu"
|
|
},
|
|
{
|
|
"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": [
|
|
-235.95565795898438,
|
|
131.96937561035156
|
|
],
|
|
"taskReference": "27-Z2-1",
|
|
"title": "Závorky z cereálií"
|
|
},
|
|
{
|
|
"id": "29-Z1-1",
|
|
"type": "open-data",
|
|
"comment": "Kevinova želva — triviální, průchod po 2D souřadnicích",
|
|
"requires": [
|
|
"label-zelvy"
|
|
],
|
|
"title": "Kevinova želva",
|
|
"position": [
|
|
153.23114013671875,
|
|
435.23114013671875
|
|
],
|
|
"taskReference": "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": "Petrova statistika",
|
|
"position": [
|
|
-239.7012176513672,
|
|
191.6642303466797
|
|
],
|
|
"taskReference": "29-Z1-3"
|
|
},
|
|
{
|
|
"id": "29-Z1-4",
|
|
"type": "open-data",
|
|
"comment": "Zuzčin výlet — DFS (topologické pořadí)",
|
|
"requires": [
|
|
"label-grafy-pracovni-poznamka"
|
|
],
|
|
"position": [
|
|
-1084.8828125,
|
|
465.46002197265625
|
|
],
|
|
"taskReference": "29-Z1-4",
|
|
"title": "Zuzčin výlet"
|
|
},
|
|
{
|
|
"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": [
|
|
263.0097351074219,
|
|
491.6130676269531
|
|
],
|
|
"taskReference": "29-Z2-1",
|
|
"title": "Krocení zlé želvy"
|
|
},
|
|
{
|
|
"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": [
|
|
-394.7185363769531,
|
|
232.44407653808594
|
|
],
|
|
"taskReference": "29-Z3-1",
|
|
"title": "Želva na dvorku"
|
|
},
|
|
{
|
|
"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": [
|
|
-321.57469177246094,
|
|
498.2836608886719
|
|
],
|
|
"taskReference": "29-Z3-2",
|
|
"title": "Písemka z angličtiny"
|
|
},
|
|
{
|
|
"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": [
|
|
1229.6161193847656,
|
|
274.53318786621094
|
|
],
|
|
"taskReference": "29-Z3-3",
|
|
"title": "Šestková čísla"
|
|
},
|
|
{
|
|
"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
|
|
],
|
|
"taskReference": "29-Z4-3",
|
|
"title": "Želva v akváriu"
|
|
},
|
|
{
|
|
"id": "31-Z1-1",
|
|
"type": "open-data",
|
|
"requires": [],
|
|
"comment": "úloha s odčítáním času",
|
|
"title": "Zuzka a poník",
|
|
"position": [
|
|
1255.5751953125,
|
|
131.96621704101562
|
|
],
|
|
"taskReference": "31-Z1-1"
|
|
},
|
|
{
|
|
"id": "31-Z1-2",
|
|
"type": "open-data",
|
|
"comment": "BFS (šachovnice, custom figurka, nejkratší cesta) ",
|
|
"requires": [
|
|
"label-grafy-pracovni-poznamka"
|
|
],
|
|
"position": [
|
|
-763.1971435546875,
|
|
493.9221496582031
|
|
],
|
|
"taskReference": "31-Z1-2",
|
|
"title": "Ukradený jezdec"
|
|
},
|
|
{
|
|
"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": "Piškvorky naslepo",
|
|
"position": [
|
|
-578.6199951171875,
|
|
278.00364685058594
|
|
],
|
|
"taskReference": "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"
|
|
],
|
|
"position": [
|
|
-1028.935791015625,
|
|
523.2289428710938
|
|
],
|
|
"taskReference": "31-Z3-2",
|
|
"title": "Zámek obrazovky"
|
|
},
|
|
{
|
|
"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": [
|
|
-899.0215454101562,
|
|
314.04736328125
|
|
],
|
|
"taskReference": "31-Z3-3",
|
|
"title": "Stáda hrochů"
|
|
},
|
|
{
|
|
"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": [
|
|
-184.5875244140625,
|
|
31.301490783691406
|
|
]
|
|
},
|
|
{
|
|
"id": "label-2d-pole",
|
|
"type": "label",
|
|
"comment": "...",
|
|
"requires": [],
|
|
"title": "2D pole",
|
|
"rotationAngle": 340,
|
|
"position": [
|
|
-498.642578125,
|
|
140.9576416015625
|
|
]
|
|
},
|
|
{
|
|
"id": "label-grafy",
|
|
"type": "label",
|
|
"comment": "...",
|
|
"requires": [],
|
|
"title": "Grafy",
|
|
"rotationAngle": 342,
|
|
"position": [
|
|
-879.3245239257812,
|
|
253.7253875732422
|
|
]
|
|
},
|
|
{
|
|
"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": [
|
|
-916.2467041015625,
|
|
398.9772033691406
|
|
]
|
|
},
|
|
{
|
|
"id": "label-retezce",
|
|
"type": "label",
|
|
"comment": "...",
|
|
"requires": [],
|
|
"title": "Textové řetězce",
|
|
"rotationAngle": 326,
|
|
"position": [
|
|
-256.3359832763672,
|
|
405.51519775390625
|
|
]
|
|
},
|
|
{
|
|
"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 pro základní kurz programování",
|
|
"htmlContent": "<p>Tady by měl začítat kurz programování. Chceme ze stávajícího kurzu vybrat úlohy a dát je sem. Postupně by asi také bylo fajn to celé rozvinou do větších detailů.</p>",
|
|
"position": [
|
|
464.3114318847656,
|
|
68.15572357177734
|
|
]
|
|
},
|
|
{
|
|
"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><p>Ohledně vzorových řešení – je čistě na Tobě, zda budeš úlohy řešit poctivě, nebo jestli si budeš číst řešení před tím, než vymyslíš něco vlastního. Zabránit Ti v tom nedokážeme a ani nechceme. Pokud se chceš něco naučit, nebo si něco procvičit, tak doporučujeme vzorová řešení otevírat až po vlastním řešení, případně když se zasekneš. Získáš tak z kurzu nejvíce.</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-Z3-4",
|
|
"26-Z4-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"
|
|
]
|
|
}
|
|
}
|