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: Linear functions
popis: The formula, the y-intercept, the slope and a root.
nazev_cviceni: Practice
nadpis_kvizu: Linear functions
---

View file

@ -0,0 +1,59 @@
---
id: matematika-2-linearni-funkce
puvodni: mat2.1
nazev: Lineární funkce
popis: Předpis, průsečík s osou y, směrnice a nulový bod.
nazev_cviceni: Příklady
nadpis_kvizu: Lineární funkce
---
# Výklad
## y = ax + b
*Předpis*
- Lineární funkce má předpis f(x) = ax + b.
- Grafem je přímka.
- b je hodnota f(0), tedy průsečík s osou y.
- Pro f(x) = 2x − 3 je průsečík s osou y číslo −3.
> Tip: a je směrnice, b je úsek na ose y.
## O kolik y vzroste
*Směrnice*
- Mezi body [x₁; y₁] a [x₂; y₂] je a = (y₂ − y₁)/(x₂ − x₁).
- Body [1; 2] a [3; 8] dávají směrnici (8 − 2)/(3 − 1) = 3.
- Kladná směrnice znamená růst, záporná pokles.
- Nulová směrnice je vodorovná přímka.
> Tip: směrnice je podíl změny y a změny x.
## Dosazení a rovnice
*Hodnota a kořen*
- f(4) u funkce 2x − 3 je 8 − 3 = 5.
- Rovnice 2x − 6 = 0 má řešení x = 3.
- To je průsečík přímky y = 2x − 6 s osou x.
- Lineární funkce s a ≠ 0 má právě jeden nulový bod.
> Tip: nulový bod je x, pro které je f(x) = 0.
# Příklady
## Funkce f(x) = 2x − 3. Kolik je f(4)?
= num:5
> 2 · 4 − 3 = 5. Výsledek je 5.
## Jaký je průsečík funkce f(x) = 2x − 3 s osou y?
= num:-3
> f(0) = −3. Výsledek je -3.
## Jaká je směrnice přímky body [1; 2] a [3; 8]?
= num:3
> (8 − 2)/(3 − 1) = 3. Výsledek je 3.
## Vyřešte 2x − 6 = 0. Napište x.
= num:3
> 2x = 6, takže x = 3. Výsledek je 3.

View file

@ -0,0 +1,6 @@
---
nazev: Systems of equations
popis: Two linear equations in two unknowns.
nazev_cviceni: Practice
nadpis_kvizu: Systems of equations
---

View file

@ -0,0 +1,59 @@
---
id: matematika-2-soustavy-rovnic
puvodni: mat2.2
nazev: Soustavy rovnic
popis: Dvě lineární rovnice o dvou neznámých.
nazev_cviceni: Příklady
nadpis_kvizu: Soustavy rovnic
---
# Výklad
## Jedno x a jedno y
*Dvojice*
- Soustava dvou lineárních rovnic hledá dvojici [x; y], která vyhovuje oběma.
- Řešením je průsečík dvou přímek.
- Sčítací metoda sečte rovnice tak, aby jedna neznámá zmizela.
- Dosazovací metoda vyjádří jednu neznámou a dosadí ji do druhé rovnice.
> Tip: výsledek pište x;y, nejdřív x.
## Opačné koeficienty
*Sčítání*
- Součet dá 2x = 12, tedy x = 6.
- Z x + y = 10 je y = 4.
- Zkouška ve druhé rovnici: 6 − 4 = 2.
- Odečtení rovnic se použije, když má neznámá v obou stejný koeficient.
> Tip: x + y = 10 a x − y = 2 se sčítají na 2x = 12.
## Stejný koeficient
*Odečtení*
- 2x + y = 8 a x + y = 5 se odečtou na x = 3.
- Pak y = 2.
- 3x + y = 10 a x + y = 6 dají 2x = 4, tedy x = 2 a y = 4.
- x + y = 7 a x − y = 1 dají x = 4 a y = 3.
> Tip: rovnice lze před odečtením násobit.
# Příklady
## Vyřešte soustavu x + y = 10 a x − y = 2. Napište x a y oddělené středníkem.
= pair:6;4
> Sečtení dá 2x = 12, x = 6 a y = 4. Napište 6;4.
## Vyřešte soustavu 2x + y = 8 a x + y = 5. Napište x a y oddělené středníkem.
= pair:3;2
> Odečtení dá x = 3 a y = 2. Napište 3;2.
## Vyřešte soustavu x + y = 7 a x − y = 1. Napište x a y oddělené středníkem.
= pair:4;3
> Sečtení dá 2x = 8, x = 4 a y = 3. Napište 4;3.
## Vyřešte soustavu 3x + y = 10 a x + y = 6. Napište x a y oddělené středníkem.
= pair:2;4
> Odečtení dá 2x = 4, x = 2 a y = 4. Napište 2;4.

View file

@ -0,0 +1,6 @@
---
nazev: Quadratic equations
popis: Factoring, the discriminant and a double root.
nazev_cviceni: Practice
nadpis_kvizu: Quadratic equations
---

View file

@ -0,0 +1,59 @@
---
id: matematika-2-kvadraticke-rovnice
puvodni: mat2.3
nazev: Kvadratické rovnice
popis: Rozklad, diskriminant a dvojnásobný kořen.
nazev_cviceni: Příklady
nadpis_kvizu: Kvadratické rovnice
---
# Výklad
## ax² + bx + c = 0
*Tvar*
- Kvadratická rovnice má a ≠ 0.
- Kořeny rovnice x² − 5x + 6 = 0 jsou 2 a 3, protože (x − 2)(x − 3) = 0.
- x² − 4 = 0 má kořeny −2 a 2.
- Součin je nula, právě když je nula aspoň jeden činitel.
> Tip: kořeny pište oddělené středníkem, pořadí nehraje roli.
## D = b² − 4ac
*Diskriminant*
- Pro ax² + bx + c = 0 je D = b² − 4ac.
- U x² − 2x − 3 je a = 1, b = −2, c = −3 a D = 4 + 12 = 16.
- D = 0 znamená jeden dvojnásobný kořen.
- D < 0 znamená, že v reálných číslech řešení není.
> Tip: D > 0 znamená dva různé reálné kořeny.
## Kořen je (−b ± √D) / (2a)
*Vzorec*
- x = (−b ± √D) / (2a).
- x² + 6x + 9 = (x + 3)², takže kořen −3 je dvojnásobný.
- U dvojnásobného kořene stačí napsat číslo jednou.
- Zkouška dosadí kořen zpět do rovnice.
> Tip: dvojnásobný kořen x² + 6x + 9 = 0 je −3.
# Příklady
## Najděte kořeny rovnice x² − 5x + 6 = 0. Oddělte je středníkem.
= set:2;3
> (x − 2)(x − 3) = 0. Napište 2;3.
## Najděte kořeny rovnice x² − 4 = 0. Oddělte je středníkem.
= set:-2;2
> x² = 4, takže x = −2 nebo x = 2. Napište -2;2.
## Jaký je diskriminant rovnice x² − 2x − 3 = 0?
= num:16
> D = (−2)² − 4 · 1 · (−3) = 4 + 12 = 16. Výsledek je 16.
## Jaký je dvojnásobný kořen rovnice x² + 6x + 9 = 0?
= num:-3
> (x + 3)² = 0, kořen je −3. Výsledek je -3.

View file

@ -0,0 +1,6 @@
---
nazev: Rational expressions
popis: Cancelling, the domain and multiplying algebraic fractions.
nazev_cviceni: Practice
nadpis_kvizu: Rational expressions
---

View file

@ -0,0 +1,59 @@
---
id: matematika-2-lomene-vyrazy
puvodni: mat2.4
nazev: Lomené výrazy
popis: Krácení, definiční obor a násobení zlomků s proměnnou.
nazev_cviceni: Příklady
nadpis_kvizu: Lomené výrazy
---
# Výklad
## Jmenovatel nesmí být nula
*Obor*
- Lomený výraz je podíl dvou mnohočlenů.
- Není definován tam, kde je jmenovatel nula.
- (x + 2)/(x − 2) nemá smysl pro x = 2.
- Po krácení se vyloučené hodnoty do oboru nevracejí.
> Tip: podmínku pište dřív, než krátíte.
## Rozdíl čtverců
*Krácení*
- (x² − 1)/(x − 1) = x + 1 pro x ≠ 1.
- Při x = 4 je hodnota 5.
- (x² − 4)/(x + 2) = x − 2 pro x ≠ −2.
- Při x = 5 je hodnota 3.
> Tip: x² − 1 = (x − 1)(x + 1).
## Čitatel s čitatelem
*Násobení*
- Zlomky se násobí stejně jako číselné.
- (2x/4) · (6/x) = 12x/(4x) = 3 pro x ≠ 0.
- 6x/(3x) = 2 pro x ≠ 0.
- Než se zkrátí písmeno, ověří se, že není nula.
> Tip: x ve jmenovateli se zkrátí jen pro x ≠ 0.
# Příklady
## Do výrazu (x² − 1)/(x − 1) dosažte x = 4.
= num:5
> Pro x ≠ 1 je výraz x + 1, tedy 5. Výsledek je 5.
## Pro které x nemá výraz (x + 2)/(x − 2) smysl?
= num:2
> Jmenovatel x − 2 je nula právě při x = 2. Výsledek je 2.
## Upravte (2x/4) · (6/x) pro x ≠ 0.
= num:3
> 12x/(4x) = 3. Výsledek je 3.
## Do výrazu (x² − 4)/(x + 2) dosažte x = 5.
= num:3
> Pro x ≠ −2 je výraz x − 2, tedy 3. Výsledek je 3.

View file

@ -0,0 +1,6 @@
---
nazev: Rational exponents
popis: Roots, a product of powers and a negative exponent.
nazev_cviceni: Practice
nadpis_kvizu: Rational exponents
---

View file

@ -0,0 +1,59 @@
---
id: matematika-2-mocniny-s-racionalnim-exponentem
puvodni: mat2.5
nazev: Mocniny s racionálním exponentem
popis: Odmocniny, součin mocnin a záporný exponent.
nazev_cviceni: Příklady
nadpis_kvizu: Mocniny s racionálním exponentem
---
# Výklad
## a^(1/n)
*Odmocnina jako exponent*
- Pro a > 0 je a^(1/n) n-tá odmocnina z a.
- 16^(1/2) = 4.
- a^(m/n) je n-tá odmocnina z aᵐ, nebo m-tá mocnina odmocniny.
- 8^(2/3) = (8^(1/3))² = 2² = 4.
> Tip: a^(1/2) je druhá odmocnina z a.
## Exponenty se sčítají
*Stejný základ*
- aᵐ · aⁿ = aᵐ⁺ⁿ.
- 3² · 3³ = 3⁵ = 243.
- (aᵐ)ⁿ = aᵐ·ⁿ.
- Základ musí být při sčítání exponentů stejný.
> Tip: 3² · 3³ = 3⁵.
## Převrácená hodnota
*Záporný exponent*
- 10⁻² = 1/100.
- 10⁻¹ = 0,1 a 10⁰ = 1.
- Záporný exponent nepřevrací znaménko základu, ale celou mocninu.
- (−2)⁻² = 1/4, protože (−2)² = 4.
> Tip: a⁻ⁿ = 1/aⁿ pro a ≠ 0.
# Příklady
## Spočítejte 16^(1/2).
= num:4
> Druhá odmocnina z 16 je 4. Výsledek je 4.
## Spočítejte 8^(2/3).
= num:4
> Třetí odmocnina z 8 je 2 a 2² = 4. Výsledek je 4.
## Spočítejte 3² · 3³.
= num:243
> 3⁵ = 243. Výsledek je 243.
## Spočítejte 10⁻².
= num:1/100
> 10⁻² = 1/10² = 1/100. Výsledek je 1/100.

View file

@ -0,0 +1,6 @@
---
nazev: Right-triangle trigonometry
popis: Sine, cosine and tangent of an acute angle.
nazev_cviceni: Practice
nadpis_kvizu: Right-triangle trigonometry
---

View file

@ -0,0 +1,59 @@
---
id: matematika-2-goniometrie-pravouhleho-trojuhelniku
puvodni: mat2.6
nazev: Goniometrie pravoúhlého trojúhelníku
popis: Sinus, kosinus a tangens ostrého úhlu.
nazev_cviceni: Příklady
nadpis_kvizu: Goniometrie pravoúhlého trojúhelníku
---
# Výklad
## Odvěsny a přepona
*Poměry*
- V pravoúhlém trojúhelníku je sin α = protilehlá / přepona.
- cos α = přilehlá / přepona.
- tan α = protilehlá / přilehlá.
- Přepona je strana proti pravému úhlu.
> Tip: sinus je protilehlá odvěsna ku přeponě.
## 30°, 45° a 60°
*Tabulkové úhly*
- sin 30° = 1/2 a cos 60° = 1/2.
- sin 60° = cos 30° = √3/2.
- sin 45° = cos 45° = √2/2.
- tan 45° = 1.
> Tip: sinus 30° je 1/2.
## Přepona a úhel
*Dopočet strany*
- Známe-li přeponu a úhel, protilehlá odvěsna je přepona · sin α.
- Proti 30° při přeponě 10 je odvěsna 5.
- Přilehlá odvěsna by byla 10 · cos 30°.
- Tangens se hodí, když jsou známé dvě odvěsny a ne přepona.
> Tip: proti úhlu 30° je polovina přepony.
# Příklady
## Kolik je sin 30°?
= num:1/2
> Sinus 30° je 1/2. Výsledek je 1/2.
## Kolik je cos 60°?
= num:1/2
> Kosinus 60° je 1/2. Výsledek je 1/2.
## Kolik je tan 45°?
= num:1
> Protilehlá a přilehlá odvěsna jsou u 45° stejně dlouhé. Výsledek je 1.
## Přepona pravoúhlého trojúhelníku je 10 a jeden úhel je 30°. Jak dlouhá je odvěsna proti tomuto úhlu?
= num:5
> 10 · sin 30° = 10 · 1/2 = 5. Výsledek je 5.

View file

@ -0,0 +1,6 @@
---
nazev: Pythagoras and Euclid
popis: The hypotenuse, the square on it, and the projections on it.
nazev_cviceni: Practice
nadpis_kvizu: Pythagoras and Euclid
---

View file

@ -0,0 +1,59 @@
---
id: matematika-2-pythagorova-a-eukleidovy-vety
puvodni: mat2.7
nazev: Pythagorova a Eukleidovy věty
popis: Přepona, obsah čtverce nad ní a úseky přepony.
nazev_cviceni: Příklady
nadpis_kvizu: Pythagorova a Eukleidovy věty
---
# Výklad
## a² + b² = c²
*Pythagoras*
- V pravoúhlém trojúhelníku se součet čtverců nad odvěsnami rovná čtverci nad přeponou.
- Trojúhelník 8, 15, 17 je pravoúhlý a přepona je 17.
- Čtverec nad přeponou trojúhelníku 3, 4, 5 má obsah 25.
- Věta platí jen v pravoúhlém trojúhelníku.
> Tip: 8² + 15² = 64 + 225 = 289 = 17².
## Úsek přepony
*Eukleides*
- Odvěsna je geometrický průměr přepony a svého úseku.
- a² = c · a_c a b² = c · b_c.
- Úseky a_c a b_c dají dohromady přeponu c.
- U odvěsen 6 a 8 je přepona 10 a úsek u odvěsny 6 je 36/10 = 18/5.
> Tip: a² = c · a_c, kde a_c je úsek přepony přilehlý k odvěsně a.
## v² = a_c · b_c
*Výška*
- Výška k přeponě je geometrický průměr obou úseků.
- Z a · b = c · v plyne v = ab/c.
- Pro odvěsny 6 a 8 a přeponu 10 je v = 48/10 = 24/5.
- Obsah trojúhelníku je pak (c · v) / 2, stejně jako (a · b) / 2.
> Tip: také platí a · b = c · v.
# Příklady
## Pravoúhlý trojúhelník má odvěsny 8 a 15. Jak dlouhá je přepona?
= num:17
> 64 + 225 = 289 = 17². Výsledek je 17.
## Jaký obsah má čtverec sestrojený nad přeponou pravoúhlého trojúhelníku se stranami 3, 4 a 5?
= num:25
> Přepona je 5 a 5² = 25. Výsledek je 25.
## Odvěsny jsou 6 a 8, přepona je 10. Jak dlouhý je úsek přepony přilehlý k odvěsně 6?
= num:18/5
> a² = c · a_c, takže a_c = 36/10 = 18/5. Výsledek je 18/5.
## Odvěsny jsou 6 a 8, přepona je 10. Jak dlouhá je výška k přeponě?
= num:24/5
> v = ab/c = 48/10 = 24/5. Výsledek je 24/5.

View file

@ -0,0 +1,6 @@
---
nazev: Circles and Thales
popis: An inscribed and a central angle, arc length, and the right angle in a semicircle.
nazev_cviceni: Practice
nadpis_kvizu: Circles and Thales
---

View file

@ -0,0 +1,59 @@
---
id: matematika-2-kruznice-a-thaletova-veta
puvodni: mat2.8
nazev: Kružnice a Thaletova věta
popis: Obvodový a středový úhel, délka oblouku a pravý úhel nad průměrem.
nazev_cviceni: Příklady
nadpis_kvizu: Kružnice a Thaletova věta
---
# Výklad
## Obvodový je polovina středového
*Úhly*
- Středový úhel má vrchol ve středu kružnice.
- Obvodový úhel má vrchol na kružnici.
- Nad stejným obloukem je obvodový úhel polovinou středového.
- Středový úhel 80° patří k obvodovému úhlu 40°.
> Tip: oba úhly musí být nad stejným obloukem.
## Část obvodu
*Oblouk*
- Celý obvod je 2πr.
- Oblouk 60° je šestina obvodu.
- Při r = 6 je jeho délka 2π.
- Výsledek nechte v násobcích π.
> Tip: délka oblouku je (α/360°) · 2πr.
## Pravý úhel nad průměrem
*Thales*
- Thaletova věta: úhel nad průměrem je pravý.
- Je-li AB průměr, je úhel ACB pravý pro každé C na kružnici různé od A a B.
- Na mřížce má průměr od [2; 4] do [8; 4] střed [5; 4] a poloměr 3.
- Vyhovují body [5; 7] a [5; 1].
> Tip: vrchol pravého úhlu leží na kružnici s průměrem AB.
# Příklady
## Středový úhel je 80°. Jak velký je obvodový úhel nad stejným obloukem ve stupních?
= num:40
> Obvodový úhel je polovina středového. Výsledek je 40.
## Kružnice má poloměr 6. Jak dlouhý je oblouk 60°? Nechte π ve výsledku.
= num:2*pi
> (60/360) · 2π · 6 = 2π. Výsledek je 2π.
## Obvodový úhel je 35°. Jak velký je středový úhel nad stejným obloukem ve stupních?
= num:70
> Středový úhel je dvojnásobek obvodového. Výsledek je 70.
## AB je průměr od [2; 4] do [8; 4]. Zakreslete bod C na kružnici, ve kterém je úhel ACB pravý.
= right:2,4;8,4
> Thaletova kružnice má střed [5; 4] a poloměr 3. Na mřížce vyhovuje [5; 7] nebo [5; 1].