"comment":"Kevin a magnety - triviální, lineární průchod pole",
"requires":[
"jak-resit-ulohy",
"label-1d-pole"
]
"label-1d-pole",
"data"
],
"title":"26-Z1-1"
},
{
"id":"26-Z1-2",
@ -21,20 +22,27 @@
"id":"26-Z1-3",
"type":"open-data",
"comment":"Zamilovaný dopis - triviální, procházení stringů po znacích a kontrola podmínek",
"requires":[]
"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":[]
"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"
"26-Z1-1",
"label-1d-pole"
]
},
{
@ -47,13 +55,19 @@
"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":[]
"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":[]
"requires":[
"26-Z2-1"
],
"title":"26-Z2-4"
},
{
"id":"26-Z3-1",
@ -65,7 +79,10 @@
"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":[]
"requires":[
"26-Z4-3",
"29-Z3-2"
]
},
{
"id":"26-Z3-3",
@ -77,7 +94,9 @@
"id":"26-Z3-4",
"type":"open-data",
"comment":"Tvar labyrintu - nejdelší cesta ve stromě, graf",
"requires":[]
"requires":[
"label-grafy-pracovni-poznamka"
]
},
{
"id":"26-Z4-1",
@ -98,20 +117,24 @@
"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":[]
"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"
"26-Z1-1",
"label-1d-pole"
]
},
{
@ -119,21 +142,26 @@
"type":"open-data",
"comment":"Kevinova želva — triviální, průchod po 2D souřadnicích",
"requires":[
"jak-resit-ulohy",
"label-zelvy"
]
],
"title":"29-Z1-1"
},
{
"id":"29-Z1-3",
"type":"open-data",
"comment":"Petrova statistika — ne úplně triviální, tvorba histogramu z pole",
"comment":"2D pole (až na poslední vstup), hešování (piškvorky) - navazuje na 26-Z1-2",
"requires":[
"26-Z4-3"
]
"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":[]
"requires":[
"label-grafy-pracovni-poznamka"
]
},
{
"id":"31-Z3-3",
"type":"open-data",
"comment":"barvení bipartitního grafu (hledání partit), na vstupu hrany",
"requires":[]
"requires":[
"26-Z1-4",
"label-grafy"
]
},
{
"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>"
},
{
"id":"jak-resit-ulohy",
@ -221,7 +269,7 @@
"type":"label",
"comment":"...",
"requires":[],
"title":"1D pole",
"title":"Pole",
"rotationAngle":337
},
{
@ -232,6 +280,32 @@
"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":"<p>undefined</p>"
},
{
"id":"label-retezce",
"type":"label",
"comment":"...",
"requires":[],
"title":"Textové řetězce",
"rotationAngle":326
},
{
"id":"label-uvod",
"type":"label",
@ -247,6 +321,26 @@
"title":"Želvy",
"rotationAngle":43
},
{
"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>"
},
{
"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>"