init commit - renderovatko a definice uloh
This commit is contained in:
commit
99725aa337
4 changed files with 404 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
out/
|
29
graphviz_render.py
Normal file
29
graphviz_render.py
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
|
||||||
|
# pokus se naimportovat graphviz
|
||||||
|
try:
|
||||||
|
from graphviz import Digraph
|
||||||
|
except ModuleNotFoundError as e:
|
||||||
|
print("ERROR: Nainstaluj si graphviz - `pip install graphviz`", file=sys.stderr)
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
# nacist definici grafu
|
||||||
|
with open("tasks.json", "r") as f:
|
||||||
|
definition = json.load(f)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
dot = Digraph(comment='The Round Table')
|
||||||
|
|
||||||
|
# nodes
|
||||||
|
for task in definition["tasks"]:
|
||||||
|
dot.node(task["id"], task["id"])
|
||||||
|
|
||||||
|
# edges
|
||||||
|
for task in definition["tasks"]:
|
||||||
|
for req in task["requires"]:
|
||||||
|
dot.edge(req, task['id'])
|
||||||
|
|
||||||
|
dot.render('out/round-table.gv', view=True)
|
133
tasks-random.txt
Normal file
133
tasks-random.txt
Normal file
|
@ -0,0 +1,133 @@
|
||||||
|
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 Open-data Kevinova nepatnáctka - Trivka, chození po souřadnicích
|
||||||
|
30-Z1-2 Open-data Sářiny loutky - Hladový algoritmus
|
||||||
|
30-Z1-3 Open-data Petrovo luštění zprávy - Hledání nejčastějšího výskytu
|
||||||
|
30-Z1-4 Open-data Zuzčin projekt - Sousednost v grafu
|
||||||
|
30-Z2-1 Open-data K-k-koktavý K-K-Kevin - Trivka, projít string a skippovat duplikáty
|
||||||
|
30-Z2-2 Open-data Hřiště pro tarantule - Chození po souřadnicích, detekce kolizí
|
||||||
|
30-Z2-3 Open-data Klonování pavouků - Sestavení stromu a vypsání cesty do kořene
|
||||||
|
30-Z2-4 Open-data Příliš bílý displej - Práce s 2d polem
|
||||||
|
30-Z3-1 Open-data Rozkolísaná produktivita - Hledání dvou čísel s co největším rozdílem
|
||||||
|
30-Z3-2 Open-data Podlézání Číňanům - Výroba palindromu
|
||||||
|
30-Z3-3 Open-data Teambuilding -
|
||||||
|
30-Z3-4 Open-data Korporátní seznamka
|
||||||
|
30-Z4-1 Open-data Statistika sprintů
|
||||||
|
30-Z4-2 Open-data Klíče od tělocvičny
|
||||||
|
30-Z4-3 Open-data Uhlazovací válec
|
||||||
|
30-Z4-4 Open-data Ohrazení zahrádky
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
241
tasks.json
Normal file
241
tasks.json
Normal file
|
@ -0,0 +1,241 @@
|
||||||
|
{
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"id": "start",
|
||||||
|
"requires": [],
|
||||||
|
"comment": "úvodní kecy o tom, jak to celé funguje"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "jak-resit-ulohy",
|
||||||
|
"requires": [
|
||||||
|
"start"
|
||||||
|
],
|
||||||
|
"comment": "kecy o tom, jak se může řešit taková úloha"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "31-Z1-1",
|
||||||
|
"requires": [
|
||||||
|
"jak-resit-ulohy"
|
||||||
|
],
|
||||||
|
"comment": "úloha s odčítáním času"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "26-Z1-1",
|
||||||
|
"comment": "Kevin a magnety - triviální, lineární průchod pole",
|
||||||
|
"requires": [
|
||||||
|
"jak-resit-ulohy"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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",
|
||||||
|
"requires": [
|
||||||
|
"26-Z1-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "27-Z2-1",
|
||||||
|
"comment": "Závorky z cereálií - 2 průchody pole, závorky",
|
||||||
|
"requires": [
|
||||||
|
"26-Z1-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": [
|
||||||
|
"26-Z4-3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "26-Z4-3",
|
||||||
|
"comment": "Hra Othello - link na 26-Z1-2, procházení 2D pole po různých směrech",
|
||||||
|
"requires": [
|
||||||
|
"26-Z1-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": [
|
||||||
|
"26-Z4-3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "31-Z1-4",
|
||||||
|
"comment": "2D pole (až na poslední vstup), hešování (piškvorky) - navazuje na 26-Z1-2",
|
||||||
|
"requires": [
|
||||||
|
"26-Z4-3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "29-Z1-1",
|
||||||
|
"comment": "Kevinova želva — triviální, průchod po 2D souřadnicích",
|
||||||
|
"requires": [
|
||||||
|
"jak-resit-ulohy"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": [
|
||||||
|
"29-Z1-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": [
|
||||||
|
"29-Z1-1",
|
||||||
|
"29-Z2-1"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"clusters": {
|
||||||
|
"Triviální výpočet": [
|
||||||
|
"31-Z1-1"
|
||||||
|
],
|
||||||
|
"Triviální průchod 1D pole": [
|
||||||
|
"26-Z1-1",
|
||||||
|
"26-Z1-1",
|
||||||
|
"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"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
Reference in a new issue