Build all apps from Markdown content; Compose Desktop replaces GTK on Linux and Windows

- content/ + scripts/build-content.py produce content.json for every app
- stable lesson IDs with one-time progress migration (Swift, Kotlin)
- shared answer-check tests (tests/answers.json) for Kotlin and Swift
- android/desktop: Compose app with updater, speech and GTK progress import
- CI packages AppImage and Windows zip with ProGuard, runs the tests

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
pepaskopec-blip 2026-10-09 20:40:37 +02:00
commit c3bc32113b
964 changed files with 57285 additions and 1156 deletions

View file

@ -0,0 +1,6 @@
---
nazev: Order of operations
popis: Brackets, then multiplication and division, then addition and subtraction.
nazev_cviceni: Practice
nadpis_kvizu: Order of operations
---

View file

@ -0,0 +1,59 @@
---
id: matematika-0-poradi-operaci
puvodni: mat0.1
nazev: Pořadí operací
popis: Závorky, násobení a dělení, sčítání a odčítání.
nazev_cviceni: Příklady
nadpis_kvizu: Pořadí operací
---
# Výklad
## Co se počítá dřív
*Pravidlo*
- Nejprve se vyřeší závorky, zevnitř ven.
- Pak jsou mocniny a odmocniny.
- Násobení a dělení mají přednost před sčítáním a odčítáním.
- Sčítání a odčítání se také provádějí zleva doprava.
> Tip: násobení a dělení jsou stejně silné a jdou zleva doprava.
## Násobení má přednost
*Bez závorek*
- Ve výrazu 2 + 3 · 4 se nejdřív násobí: 3 · 4 = 12.
- Teprve potom se přičtou dvě: 2 + 12 = 14.
- Ve výrazu 20 − 6 / 2 se nejdřív dělí: 6 / 2 = 3.
- Pak 20 − 3 = 17.
> Tip: 2 + 3 · 4 není 20.
## Závorka změní pořadí
*Závorky*
- (8 − 3) · 2 začíná v závorce: 5 · 2 = 10.
- 3 · (4 + 1) je 3 · 5 = 15.
- Bez závorky by 3 · 4 + 1 vyšlo 13.
- Závorku proto pište vždy, když má sčítání předběhnout násobení.
> Tip: závorka se chová jako jeden počet.
# Příklady
## Spočítejte 2 + 3 · 4.
= num:14
> Násobení má přednost: 3 · 4 = 12 a 2 + 12 = 14. Výsledek je 14.
## Spočítejte (8 − 3) · 2.
= num:10
> Nejdřív závorka: 8 − 3 = 5, potom 5 · 2 = 10. Výsledek je 10.
## Spočítejte 20 − 6 / 2.
= num:17
> Nejdřív dělení: 6 / 2 = 3, potom 20 − 3 = 17. Výsledek je 17.
## Spočítejte 3 · (4 + 1).
= num:15
> Nejdřív závorka: 4 + 1 = 5, potom 3 · 5 = 15. Výsledek je 15.

View file

@ -0,0 +1,6 @@
---
nazev: Fractions
popis: Adding, subtracting, multiplying and dividing fractions.
nazev_cviceni: Practice
nadpis_kvizu: Fractions
---

View file

@ -0,0 +1,59 @@
---
id: matematika-0-zlomky
puvodni: mat0.2
nazev: Zlomky
popis: Sčítání, odčítání, násobení a dělení zlomků.
nazev_cviceni: Příklady
nadpis_kvizu: Zlomky
---
# Výklad
## Společný jmenovatel
*Součet*
- Sčítat a odčítat lze zlomky se stejným jmenovatelem.
- Jinak se jmenovatelé rozšíří na nejmenší společný násobek.
- 1/2 + 1/3 má společný jmenovatel 6: 3/6 + 2/6 = 5/6.
- 3/4 − 1/4 = 2/4 = 1/2.
> Tip: zlomek v základním tvaru má nesoudělný čitatel a jmenovatel.
## Čitatel s čitatelem
*Součin*
- Zlomky se násobí čitatel čitatelem a jmenovatel jmenovatelem.
- 2/3 · 3/5 = 6/15 = 2/5.
- Krátit se smí jen čitatel se jmenovatelem, ne dvě horní čísla mezi sebou.
- Smíšené číslo se před počtem převede na zlomek.
> Tip: před násobením jde často krátit křížem.
## Dělit znamená násobit převráceným
*Podíl*
- Dělení zlomkem je násobení jeho převrácenou hodnotou.
- (3/4) : (1/2) = 3/4 · 2/1 = 6/4 = 3/2.
- Výsledek se uvede v základním tvaru.
- Nulou se dělit nesmí, proto jmenovatel nesmí vyjít 0.
> Tip: převrácený zlomek k a/b je b/a.
# Příklady
## Spočítejte 1/2 + 1/3. Zlomek v základním tvaru.
= num:5/6
> Společný jmenovatel je 6: 3/6 + 2/6 = 5/6. Výsledek je 5/6.
## Spočítejte 3/4 − 1/4.
= num:1/2
> Jmenovatel už je stejný: 2/4 = 1/2. Výsledek je 1/2.
## Spočítejte 2/3 · 3/5.
= num:2/5
> 6/15 se zkrátí třemi na 2/5. Výsledek je 2/5.
## Spočítejte (3/4) : (1/2).
= num:3/2
> Násobí se převráceným zlomkem: 3/4 · 2/1 = 3/2. Výsledek je 3/2.

View file

@ -0,0 +1,6 @@
---
nazev: Decimals
popis: Adding, multiplying and dividing decimals.
nazev_cviceni: Practice
nadpis_kvizu: Decimals
---

View file

@ -0,0 +1,59 @@
---
id: matematika-0-desetinna-cisla
puvodni: mat0.3
nazev: Desetinná čísla
popis: Sčítání, násobení a dělení desetinných čísel.
nazev_cviceni: Příklady
nadpis_kvizu: Desetinná čísla
---
# Výklad
## Čárka i tečka
*Zápis*
- Desetinná čárka odděluje celou část od desetin, setin a tisícin.
- 0,1 je jedna desetina, 0,01 je jedna setina.
- Při sčítání se čárky píšou pod sebe.
- 2,5 + 1,5 = 4.
> Tip: 0,5 je totéž co 1/2.
## Čárka se posouvá
*Násobení*
- Počet desetinných míst součinu je součet počtů míst činitelů.
- 0,2 · 5 = 1, protože dvě desetiny pětkrát jsou jedna celá.
- 1,25 − 0,5 = 0,75, což je 3/4.
- Výsledek lze psát desetinně i zlomkem.
> Tip: násobení deseti posune čárku o jedno místo doprava.
## Dělit desetinným číslem
*Dělení*
- 3,6 : 0,3 se rozšíří deseti na 36 : 3 = 12.
- Čárka se v děliteli i děleném posune o stejný počet míst.
- Dělení deseti posune čárku o jedno místo doleva.
- Nulou se ani u desetinných čísel dělit nesmí.
> Tip: dělitel se nejdřív upraví na celé číslo.
# Příklady
## Spočítejte 2,5 + 1,5.
= num:4
> Pět desetin a pět desetin je jedna celá, celkem 4. Výsledek je 4.
## Spočítejte 0,2 · 5.
= num:1
> Dvě desetiny pětkrát jsou 10 desetin, tedy 1. Výsledek je 1.
## Spočítejte 3,6 : 0,3.
= num:12
> Posun čárky dá 36 : 3 = 12. Výsledek je 12.
## Spočítejte 1,25 − 0,5.
= num:3/4
> 1,25 − 0,50 = 0,75, tedy 3/4. Výsledek je 3/4.

View file

@ -0,0 +1,6 @@
---
nazev: Percentages
popis: A percentage of a base, the rate, and a price after a discount.
nazev_cviceni: Practice
nadpis_kvizu: Percentages
---

View file

@ -0,0 +1,59 @@
---
id: matematika-0-procenta
puvodni: mat0.4
nazev: Procenta
popis: Procento ze základu, počet procent a cena po slevě.
nazev_cviceni: Příklady
nadpis_kvizu: Procenta
---
# Výklad
## Jedno procento je setina
*Základ*
- 1 % ze základu je jedna setina základu.
- p % ze základu z je (p/100) · z.
- 20 % ze 150 je 0,2 · 150 = 30.
- Základ, procentová část a počet procent jsou tři veličiny.
> Tip: pište jen číslo, znak procenta ne.
## Část dělená základem
*Kolik procent*
- Počet procent je (část / základ) · 100.
- 15 ze 60 je 15/60 = 1/4, tedy 25 %.
- Do odpovědi se píše 25, ne 0,25 a ne 25 %.
- Zlomek se na procenta násobí stem.
> Tip: výsledek 0,25 znamená 25 %.
## Dopočítání celku
*Sleva a základ*
- Po slevě 10 % zbývá 90 % původní ceny.
- 400 − 10 % je 0,9 · 400 = 360.
- Když 20 % základu je 18, je 1 % rovno 18/20.
- Celý základ je pak 100 takových dílů: 90.
> Tip: sleva 10 % nechá z ceny 90 %.
# Příklady
## Kolik je 20 % ze 150? Napište jen číslo.
= num:30
> 20 % je 0,2 a 0,2 · 150 = 30. Výsledek je 30.
## 15 je kolik procent z 60? Napište jen číslo, bez znaku %.
= num:25
> 15/60 = 1/4 = 25 %. Výsledek je 25.
## Cena 400 se sníží o 10 %. Jaká bude nová cena?
= num:360
> Zůstane 90 %: 0,9 · 400 = 360. Výsledek je 360.
## 20 % základu je 18. Jak velký je základ?
= num:90
> 1 % je 18/20 = 0,9 a 100 % je 90. Výsledek je 90.

View file

@ -0,0 +1,6 @@
---
nazev: Ratio and scale
popis: Sharing in a ratio, proportion and the scale of a map.
nazev_cviceni: Practice
nadpis_kvizu: Ratio and scale
---

View file

@ -0,0 +1,59 @@
---
id: matematika-0-pomer-a-meritko
puvodni: mat0.5
nazev: Poměr a měřítko
popis: Dělení v poměru, úměra a měřítko mapy.
nazev_cviceni: Příklady
nadpis_kvizu: Poměr a měřítko
---
# Výklad
## Díly celku
*Poměr*
- Poměr a : b říká, na kolik stejných dílů se celek rozdělí.
- Počet dílů je a + b.
- První část je a/(a + b) z celku.
- Z 20 v poměru 2 : 3 připadá na první část 8.
> Tip: poměr 2 : 3 má dohromady 5 dílů.
## Součin vnějších a vnitřních členů
*Úměra*
- V úměře a : b = c : d platí a · d = b · c.
- Z 3/5 = x/20 vyjde x = 3/5 · 20 = 12.
- Stejný poměr lze rozšiřovat i krátit.
- Neznámý člen se dopočítá jedním násobením a jedním dělením.
> Tip: 3 : 5 = x : 20 znamená 3/5 = x/20.
## Mapa a skutečnost
*Měřítko*
- Měřítko 1 : k zmenšuje: skutečnost je k-krát větší než plán.
- 5 cm na mapě 1 : 1000 je 5000 cm, tedy 50 m.
- Měřítko 5 : 1 je zvětšení, obraz je pětkrát větší.
- 4 cm v měřítku 5 : 1 odpovídá obrazu 20 cm.
> Tip: 1 : 1000 znamená, že 1 cm na mapě je 10 m ve skutečnosti.
# Příklady
## Číslo 20 rozdělte v poměru 2 : 3. Jak velká je první část?
= num:8
> Dílů je 5 a první část jsou 2 z nich: 2/5 · 20 = 8. Výsledek je 8.
## Na mapě 1 : 1000 jsou 5 cm. Kolik metrů je to ve skutečnosti?
= num:50
> 5 cm · 1000 = 5000 cm = 50 m. Výsledek je 50.
## Platí 3 : 5 = x : 20. Kolik je x?
= num:12
> x = 3/5 · 20 = 12. Výsledek je 12.
## Úsečka 4 cm se zobrazí v měřítku 5 : 1. Jak dlouhý je obraz v centimetrech?
= num:20
> Měřítko 5 : 1 zvětšuje pětkrát: 4 · 5 = 20. Výsledek je 20.

View file

@ -0,0 +1,6 @@
---
nazev: Negative numbers
popis: Addition, multiplication and absolute value.
nazev_cviceni: Practice
nadpis_kvizu: Negative numbers
---

View file

@ -0,0 +1,59 @@
---
id: matematika-0-zaporna-cisla
puvodni: mat0.6
nazev: Záporná čísla
popis: Sčítání, násobení a absolutní hodnota.
nazev_cviceni: Příklady
nadpis_kvizu: Záporná čísla
---
# Výklad
## Vpravo roste, vlevo klesá
*Číselná osa*
- Kladná čísla leží vpravo od nuly, záporná vlevo.
- −3 + 8 je posun z −3 o 8 kroků doprava, tedy na 5.
- Odčítání záporného čísla je totéž co přičítání kladného.
- 6 − (−2) = 6 + 2 = 8.
> Tip: přičíst kladné číslo znamená posun doprava.
## Znaménka
*Násobení*
- Součin kladného a záporného čísla je záporný.
- Součin dvou záporných čísel je kladný.
- (−4) · (−5) = 20.
- Stejné pravidlo platí pro dělení.
> Tip: dvě záporná znaménka dají kladný součin.
## Vzdálenost od nuly
*Absolutní hodnota*
- |a| je vzdálenost čísla a od nuly na ose.
- |−7| = 7 a |7| = 7.
- |0| = 0.
- Absolutní hodnota smaže znaménko, ale číslo jinak nezmění.
> Tip: absolutní hodnota nikdy není záporná.
# Příklady
## Spočítejte −3 + 8.
= num:5
> Z −3 se jde o 8 doprava, na 5. Výsledek je 5.
## Spočítejte (−4) · (−5).
= num:20
> Součin dvou záporných čísel je kladný: 20. Výsledek je 20.
## Spočítejte |−7|.
= num:7
> Vzdálenost −7 od nuly je 7. Výsledek je 7.
## Spočítejte 6 − (−2).
= num:8
> Odčítat −2 znamená přičíst 2: 6 + 2 = 8. Výsledek je 8.

View file

@ -0,0 +1,6 @@
---
nazev: Linear equations
popis: Equivalent steps and simple equations.
nazev_cviceni: Practice
nadpis_kvizu: Linear equations
---

View file

@ -0,0 +1,59 @@
---
id: matematika-0-linearni-rovnice
puvodni: mat0.7
nazev: Lineární rovnice
popis: Ekvivalentní úpravy a jednoduché rovnice.
nazev_cviceni: Příklady
nadpis_kvizu: Lineární rovnice
---
# Výklad
## Stejně na obě strany
*Rovnováha*
- Rovnice říká, že levá strana se rovná pravé.
- K oběma stranám lze přičíst stejné číslo.
- Obě strany lze vynásobit stejným nenulovým číslem.
- Cílem je osamostatnit neznámou.
> Tip: co uděláte vlevo, udělejte i vpravo.
## Nejdřív číslo, pak koeficient
*Kroky*
- x + 5 = 12 se odečtením pěti změní na x = 7.
- 3x = 15 se vydělí třemi: x = 5.
- 2x − 4 = 10 dá po přičtení čtyř 2x = 14, tedy x = 7.
- Zkouška dosadí výsledek do původní rovnice.
> Tip: 2x − 4 = 10 se nejdřív zbaví čtyřky.
## Zlomek s x
*Dělení neznámé*
- x/2 je totéž co (1/2) · x.
- Násobení obou stran dvěma dá x = 12.
- Násobit nulou se nesmí, rovnice by ztratila význam.
- U lineární rovnice s nenulovým koeficientem je řešení jedno.
> Tip: x/2 = 6 se násobí dvěma.
# Příklady
## Vyřešte x + 5 = 12. Napište x.
= num:7
> Od obou stran se odečte 5. Výsledek je 7.
## Vyřešte 3x = 15. Napište x.
= num:5
> Obě strany se vydělí 3. Výsledek je 5.
## Vyřešte 2x − 4 = 10. Napište x.
= num:7
> 2x = 14, takže x = 7. Výsledek je 7.
## Vyřešte x/2 = 6. Napište x.
= num:12
> Obě strany se násobí 2. Výsledek je 12.

View file

@ -0,0 +1,6 @@
---
nazev: Perimeter, area and a square
popis: A rectangle, a triangle, and completing a square on the grid.
nazev_cviceni: Practice
nadpis_kvizu: Perimeter, area and a square
---

View file

@ -0,0 +1,63 @@
---
id: matematika-0-obvod-obsah-a-ctverec
puvodni: mat0.8
nazev: Obvod, obsah a čtverec
popis: Obdélník, trojúhelník a doplnění čtverce na mřížce.
nazev_cviceni: Příklady
nadpis_kvizu: Obvod, obsah a čtverec
---
# Výklad
## Obvod a obsah
*Obdélník*
- Obdélník a × b má obvod 2 · (a + b).
- Obdélník 5 × 3 má obvod 2 · 8 = 16.
- Obsah je a · b. Obdélník 6 × 4 má obsah 24.
- Jednotky obvodu jsou délkové, jednotky obsahu čtvereční.
> Tip: obvod je součet všech stran, obsah je součin dvou sousedních.
## Základna a výška
*Trojúhelník*
- Součet vnitřních úhlů trojúhelníku je 180°.
- Třetí úhel je 180° minus součet dvou známých.
- Úhly 60° a 50° doplňuje 70°.
- Obsah je (základna · výška) / 2. Pro 8 a 5 je to 20.
> Tip: výška je kolmá na základnu, ne délka šikmé strany.
## Doplnění na mřížce
*Čtverec*
- Čtverec má čtyři shodné strany a čtyři pravé úhly.
- Druhé dva vrcholy vzniknou posunutím strany o stejnou délku kolmo.
- U vodorovné strany leží zbývající vrcholy přímo nad ní, nebo pod ní.
- Na mřížce jsou platné jen oba vrcholy téže strany.
> Tip: osa y míří nahoru. Klepnutím na bod ho odeberete.
# Příklady
## Obdélník má strany 5 a 3. Jaký je jeho obvod?
= num:16
> 2 · (5 + 3) = 16. Výsledek je 16.
## Obdélník má strany 6 a 4. Jaký je jeho obsah?
= num:24
> Obsah je 6 · 4 = 24. Výsledek je 24.
## Trojúhelník má základnu 8 a výšku 5. Jaký je jeho obsah?
= num:20
> Obsah je (8 · 5) / 2 = 20. Výsledek je 20.
## Dva úhly trojúhelníku jsou 60° a 50°. Jak velký je třetí úhel ve stupních?
= num:70
> Součet je 180°, takže třetí úhel je 70°. Výsledek je 70.
## Na mřížce je strana čtverce od A = [2; 3] k B = [5; 3]. Doplňte zbývající dva vrcholy.
= square:2,3;5,3
> Strana má délku 3. Druhé dva vrcholy jsou [2; 6] a [5; 6], nebo [2; 0] a [5; 0].