diff --git a/frontend/src/Graph.svelte b/frontend/src/Graph.svelte index 5ae0b4a..a02034c 100644 --- a/frontend/src/Graph.svelte +++ b/frontend/src/Graph.svelte @@ -49,6 +49,11 @@ function eventHandler(hovering: CustomEvent) { if (hovering.detail) { hoveredTask = task.id; + if (!selection.has(task)) { + selection.clear(); + selection.add(task); + selection = selection; + } eventDispatcher("preSelectTask", task); } else { if (hoveredTask == task.id) hoveredTask = null; @@ -235,8 +240,22 @@ height={selectionRectangle[1][1] - selectionRectangle[0][1]} /> {/if} {#if showCenterMarker} - - + + {/if} {#each edges as edge} diff --git a/tasks-random.txt b/tasks-random.txt deleted file mode 100644 index 5bbc5b5..0000000 --- a/tasks-random.txt +++ /dev/null @@ -1,133 +0,0 @@ -26. a 29. ročník - -Triviální výpočet -31-Z1-1: triviální (odčítání času) - -Triviální průchod 1D pole -{"id": "26-Z1-1", "comment": "Kevin a magnety - triviální, lineární průchod pole"}, -{"id": "26-Z2-1", "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"}, -{"id": "27-Z2-1", "comment": "Závorky z cereálií - 2 průchody pole, závorky"}, - -Triviální průchody 2D pole -{"id": "26-Z1-2", "comment": "Piškvorky - detekce vítězství v piškvorkách, procházení 2D pole v různych směrech", "requires": []}, -{"id": "26-Z4-3", "comment": "Hra Othello - link na 26-Z1-2, procházení 2D pole po různých směrech", "requires": []}, -{"id": "29-Z3-1", "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": []}, -{"id": "31-Z1-4", "comment": "2D pole (až na poslední vstup), hešování (piškvorky) - navazuje na 26-Z1-2", "requires": []}, - -Želvy -{"id": "29-Z1-1", "comment": "Kevinova želva — triviální, průchod po 2D souřadnicích", "requires": []}, -{"id": "29-Z2-1", "comment": "Krocení zlé želvy — triviální, průchod po 2D souřadnicích, přímo navazuje na 29-Z1-1", "requires": []}, -{"id": "29-Z4-3", "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": []}, - - -Komplexnější práce s poli -{"id": "26-Z2-4", "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":[]}, -{"id": "29-Z1-3", "comment":"Petrova statistika — ne úplně triviální, tvorba histogramu z pole", "requires":[]}, - -Práce s čísly -{"id": "26-Z2-2", "comment": "SADO - triviální, procházení celých čísel v intervalu a kontrola podmínky", "requires": []}, -{"id": "26-Z3-3", "comment": "Hádanka - triky s dělitelností devíti a rozkladem čísel, docela hard teorie", "requires": []}, -{"id": "26-Z4-1", "comment": "Vražedná čísla- WTF, teorie čísel, hard as fuck, divný", "requires": []}, -{"id": "29-Z3-3", "comment": "Šestková čísla — mega voser implementovat, spíš matematická úloha, převod dešitkových čísel do hacknutých římských", "requires": []}, - -Práce s řetězci -{"id": "26-Z1-3", "comment": "Zamilovaný dopis - triviální, procházení stringů po znacích a kontrola podmínek", "requires":[]}, -{"id": "26-Z2-3", "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":[]}, -{"id": "26-Z3-2", "comment": "Čarodějova šifra - šifrování mřížkou, práce se stringy, rotace matice, vhodné na code review?, docela hard", "requires":[]}, -{"id": "29-Z3-2", "comment": "Písemka z angličtiny — voser implementovat, easy dřevorubecký řešení, optimálně trie, což na Z IMHO hard", "requires":[]}, - -Grafy -{"id": "26-Z1-4", "comment": "Hroch v jezeře - BFS či jiné prohledávání, počítání velikosti komponent v 2D poli, ", "requires":[]}, -{"id": "26-Z4-4", "comment": "Hlídači v labyrintu - policajti hlídající na grafu, konkrétně na stromě, rekurze, technicky asi až DP", "requires":[]}, -{"id": "26-Z3-4", "comment": "Tvar labyrintu - nejdelší cesta ve stromě, graf", "requires":[]}, -{"id": "29-Z1-4", "comment": "Zuzčin výlet — DFS (topologické pořadí)", "requires":[]}, -{"id": "31-Z1-2", "comment": "BFS (šachovnice, custom figurka, nejkratší cesta) ", "requires":[]}, -{"id": "31-Z3-2", "comment": "DFS (hledání cesty v grafu po písmenech)", "requires":[]}, -{"id": "31-Z3-3", "comment": "barvení bipartitního grafu (hledání partit), na vstupu hrany", "requires":[]}, - -Nápad -{"id": "26-Z4-2", "comment": "Sbírání vajíček - hledení mediánu, musí se to ale vymyslet, nejkratší cesta při chození tam a zpět", "requires": []}, - -Voser -{"id": "26-Z3-1", "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": []}, - - --------- -ODZHORA POCAD PREBUSENO DO tasks.json --------- - -29-Z1-2 — Sářiny pamlsky — triviální, výpis přirozených čísel na základě pravidel - -29-Z2-2 — Sářina volba — spíš triviální, hledání společných vlasností na dvou stejně dlouhých polích -29-Z2-3 — Petr v říši divů — grafy - prohledávání (rozpad na komponenty) -29-Z2-4 — Zuzka: Cesta tam a zase zpátky — nejdelší rostoucí podposloupnost splňující podmínku, příběh i vstup připomínají 28-Z4-5 - -29-Z3-4 — Zdobení stromečku — grafy - prohledávání, hledání kružnice v grafu, zmateně zadané - -29-Z4-1 — Šíření viru — vopruz načítat vstup, přímočaré kvadratické řešení, trochu důmyslnější optimální, podhodnocená as fuck, šíření viru v grafu -29-Z4-2 — Vybírání atrakcí — ezy hladový řešení, pokud si ho umíte zdůvodnit, což není úplně triviální, máme K lidí, pro každého přípustný interval a K² čísel, které každému chceme přidělit - -29-Z4-4 — Hledání součtu — ezy housenka pokud umíte číst, hledání podposloupnosti se součtem co nejbližším zadanému, celé v kladných číslech - -28. Ročník -28-Z1-1 triviální, průchod pole -28-Z1-2 dělitelnost -28-Z1-3 dělení a modulení -28-Z1-4 hledání komponent souvislosti - -28-Z2-1 hledání podřetězce -28-Z2-2 Collatzova domněnka -28-Z2-3 seznam sousedů, hledání kružnic dané velikosti (3) -28-Z2-4 spojový seznam nebo eulerovský tah - -28-Z3-1 nalezení minima a maxima -28-Z3-2 matematika -28-Z3-3 zjednodušení problému?? -28-Z3-4 rekurze (není to jednoduché) - -28-Z4-1 souřadnice -28-Z4-2 triviální průchod 2D pole -28-Z4-3 binární vyhledávání, třídění -28-Z4-4 dynamické programování, práce s čísly - - - -30. ročník -30-Z1-1: Kevinova nepatnáctka - Trivka, chození po souřadnicích -30-Z1-2: Sářiny loutky - Hladový algoritmus -30-Z1-3: Petrovo luštění zprávy - Hledání nejčastějšího výskytu -30-Z1-4: Zuzčin projekt - Sousednost v grafu -30-Z2-1: K-k-koktavý K-K-Kevin - Trivka, projít string a skippovat duplikáty -30-Z2-2: Hřiště pro tarantule - Chození po souřadnicích, detekce kolizí -30-Z2-3: Klonování pavouků - Sestavení stromu a vypsání cesty do kořene -30-Z2-4: Příliš bílý displej - Práce s 2d polem -30-Z3-1: Rozkolísaná produktivita - Hledání dvou čísel s co největším rozdílem -30-Z3-2: Podlézání Číňanům - Výroba palindromu -30-Z3-3: Teambuilding - Voser implementovat, hledání klíčů na odemčení dveří -30-Z3-4: Korporátní seznamka - Voser implementovat, doplňování do stringu -30-Z4-1: Statistika sprintů - Prefixové součty -30-Z4-2: Klíče od tělocvičny - Provházení bludiště -30-Z4-3: Uhlazovací válec - ProhledávánI grafu -30-Z4-4: Ohrazení zahrádky - Trivka, práce souřadnicemi - - -31. ročník - - -31-Z1-3: průnik N intervalů (3D na kvádrech) - -31-Z2-1: hešování (objednávka pizzy po dílcích, ceil(group by typ, sum, / 8))) -31-Z2-2: 2D pole (simulace tetrisu) -31-Z2-3: ňáký šachy, předzpracování, hledání nejbližších věží a střelců in bulk - chce lepší tag -31-Z2-4: hledání periody v desetinném čísle -31-Z3-1: triviální - zapamatování stringů (vybírání rýmů) - - -31-Z3-4: geometrie - přihrádky/zametání (vypsat všechny dvojice bodů s vzdáleností max K) -31-Z4-1: sort + průchod pole (nejosamělejší bod na přímce) -31-Z4-2: binární čísla - - - - - diff --git a/tasks.json b/tasks.json index 171bd14..6f03e47 100644 --- a/tasks.json +++ b/tasks.json @@ -236,6 +236,182 @@ "taskReference": "27-Z2-1", "title": "Závorky z cereálií" }, + { + "id": "28-Z1-1", + "type": "open-data", + "taskReference": "28-Z1-1", + "comment": "triviální, průchod pole", + "requires": [], + "position": [ + 1574.8651123046875, + -54.023719787597656 + ] + }, + { + "id": "28-Z1-2", + "type": "open-data", + "taskReference": "28-Z1-2", + "comment": "dělitelnost", + "requires": [], + "position": [ + 1468.0250244140625, + -49.02372360229492 + ] + }, + { + "id": "28-Z1-3", + "type": "open-data", + "taskReference": "28-Z1-3", + "comment": "dělení a modulení", + "requires": [], + "position": [ + 1400.1099853515625, + -145.4812469482422 + ] + }, + { + "id": "28-Z1-4", + "type": "open-data", + "taskReference": "28-Z1-4", + "comment": "hledání komponent souvislosti", + "requires": [], + "position": [ + 1383.2698974609375, + -202.57998657226562 + ] + }, + { + "id": "28-Z2-1", + "type": "open-data", + "taskReference": "28-Z2-1", + "comment": "hledání podřetězce", + "requires": [], + "position": [ + 1483.3087158203125, + -193.50497436523438 + ] + }, + { + "id": "28-Z2-2", + "type": "open-data", + "taskReference": "28-Z2-2", + "comment": "Collatzova domněnka", + "requires": [], + "position": [ + 1450.6412353515625, + -508.93878173828125 + ] + }, + { + "id": "28-Z2-3", + "type": "open-data", + "taskReference": "28-Z2-3", + "comment": "seznam sousedů, hledání kružnic dané velikosti (3)", + "requires": [], + "position": [ + 1261.51611328125, + -521.9762878417969 + ] + }, + { + "id": "28-Z2-4", + "type": "open-data", + "taskReference": "28-Z2-4", + "comment": "spojový seznam nebo eulerovský tah", + "requires": [], + "position": [ + 1442.344970703125, + -274.54248046875 + ] + }, + { + "id": "28-Z3-1", + "type": "open-data", + "taskReference": "28-Z3-1", + "comment": "nalezení minima a maxima", + "requires": [], + "position": [ + 1096.826171875, + -141.4437255859375 + ] + }, + { + "id": "28-Z3-2", + "type": "open-data", + "taskReference": "28-Z3-2", + "comment": "matematika", + "requires": [], + "position": [ + 818.8499145507812, + -206.74127197265625 + ] + }, + { + "id": "28-Z3-3", + "type": "open-data", + "taskReference": "28-Z3-3", + "comment": "zjednodušení problému??", + "requires": [], + "position": [ + 874.887451171875, + -94.75247955322266 + ] + }, + { + "id": "28-Z3-4", + "type": "open-data", + "taskReference": "28-Z3-4", + "comment": "rekurze (není to jednoduché)", + "requires": [], + "position": [ + 1073.7274169921875, + -258.63002014160156 + ] + }, + { + "id": "28-Z4-1", + "type": "open-data", + "taskReference": "28-Z4-1", + "comment": "souřadnice", + "requires": [], + "position": [ + 859.5786743164062, + -276.0987548828125 + ] + }, + { + "id": "28-Z4-2", + "type": "open-data", + "taskReference": "28-Z4-2", + "comment": "triviální průchod 2D pole", + "requires": [], + "position": [ + 754.1712036132812, + -282.5687561035156 + ] + }, + { + "id": "28-Z4-3", + "type": "open-data", + "taskReference": "28-Z4-3", + "comment": "binární vyhledávání, třídění", + "requires": [], + "position": [ + 880.9987182617188, + -358.81500244140625 + ] + }, + { + "id": "28-Z4-4", + "type": "open-data", + "taskReference": "28-Z4-4", + "comment": "dynamické programování, práce s čísly", + "requires": [], + "position": [ + 814.6162109375, + -379.39630126953125 + ] + }, { "id": "29-Z1-1", "type": "open-data", @@ -250,6 +426,17 @@ ], "taskReference": "29-Z1-1" }, + { + "id": "29-Z1-2", + "type": "open-data", + "taskReference": "29-Z1-2", + "comment": "Sářiny pamlsky — triviální, výpis přirozených čísel na základě pravidel", + "requires": [], + "position": [ + 1433.2462158203125, + -348.25872802734375 + ] + }, { "id": "29-Z1-3", "type": "open-data", @@ -292,6 +479,39 @@ "taskReference": "29-Z2-1", "title": "Krocení zlé želvy" }, + { + "id": "29-Z2-2", + "type": "open-data", + "taskReference": "29-Z2-2", + "comment": "Sářina volba — spíš triviální, hledání společných vlasností na dvou stejně dlouhých polích", + "requires": [], + "position": [ + 1410.2337646484375, + -441.5187683105469 + ] + }, + { + "id": "29-Z2-3", + "type": "open-data", + "taskReference": "29-Z2-3", + "comment": "Petr v říši divů — grafy - prohledávání (rozpad na komponenty)", + "requires": [], + "position": [ + 1576.2962646484375, + -488.655029296875 + ] + }, + { + "id": "29-Z2-4", + "type": "open-data", + "taskReference": "29-Z2-4", + "comment": "Zuzka: Cesta tam a zase zpátky — nejdelší rostoucí podposloupnost splňující podmínku, příběh i vstup připomínají 28-Z4-5", + "requires": [], + "position": [ + 1631.98876953125, + -358.9374694824219 + ] + }, { "id": "29-Z3-1", "type": "open-data", @@ -333,6 +553,39 @@ "taskReference": "29-Z3-3", "title": "Šestková čísla" }, + { + "id": "29-Z3-4", + "type": "open-data", + "taskReference": "29-Z3-4", + "comment": "Zdobení stromečku — grafy - prohledávání, hledání kružnice v grafu, zmateně zadané", + "requires": [], + "position": [ + 1613.5562744140625, + -297.6412353515625 + ] + }, + { + "id": "29-Z4-1", + "type": "open-data", + "taskReference": "29-Z4-1", + "comment": "Šíření viru — vopruz načítat vstup, přímočaré kvadratické řešení, trochu důmyslnější optimální, podhodnocená as fuck, šíření viru v grafu", + "requires": [], + "position": [ + 1570.2962646484375, + -265.0612487792969 + ] + }, + { + "id": "29-Z4-2", + "type": "open-data", + "taskReference": "29-Z4-2", + "comment": "Vybírání atrakcí — ezy hladový řešení, pokud si ho umíte zdůvodnit, což není úplně triviální, máme K lidí, pro každého přípustný interval a K² čísel, které každému chceme přidělit", + "requires": [], + "position": [ + 1634.2974853515625, + -199.5549774169922 + ] + }, { "id": "29-Z4-3", "type": "open-data", @@ -348,6 +601,209 @@ "taskReference": "29-Z4-3", "title": "Želva v akváriu" }, + { + "id": "29-Z4-4", + "type": "open-data", + "taskReference": "29-Z4-4", + "comment": "Hledání součtu — ezy housenka pokud umíte číst, hledání podposloupnosti se součtem co nejbližším zadanému, celé v kladných číslech", + "requires": [], + "position": [ + 1610.87744140625, + -133.54248046875 + ] + }, + { + "id": "30-Z1-1", + "type": "open-data", + "taskReference": "30-Z1-1", + "title": "Kevinova nepatnáctka", + "comment": "Trivka, chození po souřadnicích", + "requires": [], + "position": [ + 572.9862060546875, + -361.655029296875 + ] + }, + { + "id": "30-Z1-2", + "type": "open-data", + "taskReference": "30-Z1-2", + "title": "Sářiny loutky", + "comment": "Hladový algoritmus", + "requires": [], + "position": [ + 1046.9624633789062, + -526.9387512207031 + ] + }, + { + "id": "30-Z1-3", + "type": "open-data", + "taskReference": "30-Z1-3", + "title": "Petrovo luštění zprávy", + "comment": "Hledání nejčastějšího výskytu ", + "requires": [], + "position": [ + 721.6036987304688, + -430.6800231933594 + ] + }, + { + "id": "30-Z1-4", + "type": "open-data", + "taskReference": "30-Z1-4", + "title": "Zuzčin projekt", + "comment": "Sousednost v grafu", + "requires": [], + "position": [ + 596.0599365234375, + -297.4825439453125 + ] + }, + { + "id": "30-Z2-1", + "type": "open-data", + "taskReference": "30-Z2-1", + "title": "K-k-koktavý K-K-Kevin", + "comment": "Trivka, projít string a skippovat duplikáty", + "requires": [], + "position": [ + 640.2936401367188, + -213.85252380371094 + ] + }, + { + "id": "30-Z2-2", + "type": "open-data", + "taskReference": "30-Z2-2", + "title": "Hřiště pro tarantule", + "comment": "Chození po souřadnicích, detekce kolizí", + "requires": [], + "position": [ + 702.7511596679688, + -135.3337631225586 + ] + }, + { + "id": "30-Z2-3", + "type": "open-data", + "taskReference": "30-Z2-3", + "title": "Klonování pavouků", + "comment": "Sestavení stromu a vypsání cesty do kořene", + "requires": [], + "position": [ + 807.9862060546875, + -24.777490615844727 + ] + }, + { + "id": "30-Z2-4", + "type": "open-data", + "taskReference": "30-Z2-4", + "title": "Příliš bílý displej", + "comment": " Práce s 2d polem", + "requires": [], + "position": [ + 960.7762451171875, + -208.45751953125 + ] + }, + { + "id": "30-Z3-1", + "type": "open-data", + "taskReference": "30-Z3-1", + "title": "Rozkolísaná produktivita", + "comment": " Hledání dvou čísel s co největším rozdílem", + "requires": [], + "position": [ + 1047.8624877929688, + 2.5687755346298218 + ] + }, + { + "id": "30-Z3-2", + "type": "open-data", + "taskReference": "30-Z3-2", + "title": "Podlézání Číňanům", + "comment": "Výroba palindromu", + "requires": [], + "position": [ + 1335.9012451171875, + -74.43122863769531 + ] + }, + { + "id": "30-Z3-3", + "type": "open-data", + "taskReference": "30-Z3-3", + "title": "Teambuilding", + "comment": "Voser implementovat, hledání klíčů na odemčení dveří", + "requires": [], + "position": [ + 1233.739990234375, + -237.59249877929688 + ] + }, + { + "id": "30-Z3-4", + "type": "open-data", + "taskReference": "30-Z3-4", + "title": "Korporátní seznamka", + "comment": "Voser implementovat, doplňování do stringu", + "requires": [], + "position": [ + 1161.6162109375, + -319.74127197265625 + ] + }, + { + "id": "30-Z4-1", + "type": "open-data", + "taskReference": "30-Z4-1", + "title": "Statistika sprintů", + "comment": " Prefixové součty", + "requires": [], + "position": [ + 983.1099853515625, + -302.6050109863281 + ] + }, + { + "id": "30-Z4-2", + "type": "open-data", + "taskReference": "30-Z4-2", + "title": "Klíče od tělocvičny", + "comment": "Provházení bludiště", + "requires": [], + "position": [ + 1138.3812255859375, + -378.9012451171875 + ] + }, + { + "id": "30-Z4-3", + "type": "open-data", + "taskReference": "30-Z4-3", + "title": "Uhlazovací válec", + "comment": "ProhledávánI grafu", + "requires": [], + "position": [ + 1306.1600341796875, + -363.9637756347656 + ] + }, + { + "id": "30-Z4-4", + "type": "open-data", + "taskReference": "30-Z4-4", + "title": "Ohrazení zahrádky", + "comment": "Trivka, práce souřadnicemi", + "requires": [], + "position": [ + 1238.6287841796875, + -164.0612335205078 + ] + }, { "id": "31-Z1-1", "type": "open-data", @@ -374,6 +830,17 @@ "taskReference": "31-Z1-2", "title": "Ukradený jezdec" }, + { + "id": "31-Z1-3", + "type": "open-data", + "taskReference": "31-Z1-3", + "comment": "průnik N intervalů (3D na kvádrech)", + "requires": [], + "position": [ + 978.01123046875, + -112.03751373291016 + ] + }, { "id": "31-Z1-4", "type": "open-data", @@ -388,6 +855,61 @@ ], "taskReference": "31-Z1-4" }, + { + "id": "31-Z2-1", + "type": "open-data", + "taskReference": "31-Z2-1", + "comment": "hešování (objednávka pizzy po dílcích, ceil(group by typ, sum, / 8)))", + "requires": [], + "position": [ + 1127.4437255859375, + -64.70246124267578 + ] + }, + { + "id": "31-Z2-2", + "type": "open-data", + "taskReference": "31-Z2-2", + "comment": "2D pole (simulace tetrisu)", + "requires": [], + "position": [ + 1333.40625, + -291.3462677001953 + ] + }, + { + "id": "31-Z2-3", + "type": "open-data", + "taskReference": "31-Z2-3", + "comment": "ňáký šachy, předzpracování, hledání nejbližších věží a střelců in bulk - chce lepší tag", + "requires": [], + "position": [ + 720.4924926757812, + -342.6925354003906 + ] + }, + { + "id": "31-Z2-4", + "type": "open-data", + "taskReference": "31-Z2-4", + "comment": "hledání periody v desetinném čísle", + "requires": [], + "position": [ + 927.677490234375, + -439.93878173828125 + ] + }, + { + "id": "31-Z3-1", + "type": "open-data", + "taskReference": "31-Z3-1", + "comment": "triviální - zapamatování stringů (vybírání rýmů)", + "requires": [], + "position": [ + 1253.751220703125, + -437.8525390625 + ] + }, { "id": "31-Z3-2", "type": "open-data", @@ -417,6 +939,39 @@ "taskReference": "31-Z3-3", "title": "Stáda hrochů" }, + { + "id": "31-Z3-4", + "type": "open-data", + "taskReference": "31-Z3-4", + "comment": "geometrie - přihrádky/zametání (vypsat všechny dvojice bodů s vzdáleností max K)", + "requires": [], + "position": [ + 1142.356201171875, + -461.64251708984375 + ] + }, + { + "id": "31-Z4-1", + "type": "open-data", + "taskReference": "31-Z4-1", + "comment": "sort + průchod pole (nejosamělejší bod na přímce)", + "requires": [], + "position": [ + 872.5675048828125, + -481.3587646484375 + ] + }, + { + "id": "31-Z4-2", + "type": "open-data", + "taskReference": "31-Z4-2", + "comment": "binární čísla", + "requires": [], + "position": [ + 1028.8512573242188, + -439.8162841796875 + ] + }, { "id": "data", "type": "text", @@ -427,8 +982,8 @@ "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ů.

", "position": [ - -29, - 2 + -163, + -83 ] }, {