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,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.