# DailyKakuro — technické poznámky ## Přehled skriptů | Skript | Popis | |--------|-------| | `preskumaj_kakuro.py` | Průzkumný — vytáhne `gameLevels` z JS kontextu stránky | | `stahni_kakuro.py` | Stáhne data z webu a uloží do MySQL (celý rok najednou) | | `vykresli_kakuro.py` | Generuje PDF z dat v MySQL (reportlab, vektorové) | ## Zdroj dat Stránka: https://www.solitaire.org/daily-kakuro/ Stejná architektura jako Str8ts — `game.php` načte `gameLevels` s daty pro celý rok (366 dní × 4 obtížnosti). Klíče `"MM-DD"`, bez roku. Data se nemění přes rok — stačí jednorázové stažení v lednu. ## Obtížnosti a velikosti mřížek | Obtížnost | Rozměr mřížky | |-----------|---------------| | easy | 10×10 (data 9×9 + prepend) | | medium | 10×10 | | hard | 12×12 (data 11×11 + prepend) | | expert | 12×12 | ## Datová struktura `gameLevels` Každý záznam je jeden string — řádky oddělené čárkou: ``` "098400970,986230849,850049095,613007810,..." ``` Při zpracování se: 1. Ke každému řádku přidá `0` na začátek 2. Přidá se nulový řádek na začátek (horní okraj) Význam číslic: - `0` = černá/nápovědní buňka - `1`–`9` = číslo řešení **Součty se neukládají** — vypočítají se z řešení: sečtou se čísla ve směru doprava/dolů až po další nulu. Data obsahují rovnou **řešení**, ne zadání. Zadání = prázdné bílé buňky + součty v černých. ## MySQL tabulka `puzzle.puzzles` Sdílená tabulka se Str8ts. Pro Kakuro: - `game_type` = `'kakuro'` - `puzzle` = surový string (řešení + struktura) - `solution` = stejný string (data jsou řešení) - `extra` = `{"grid_size": 10}` nebo `{"grid_size": 12}` - `source` = `'solitaire.org'` Stav: celý rok 2026 naplněn (1460 řádků = 365 dní × 4 obtížnosti). ## Generování PDF (`vykresli_kakuro.py`) - Knihovna: **reportlab** — vektorová grafika - Nápovědní buňky (černé): tmavé pozadí + diagonála + součty (bílý text) - Součet doprava → horní pravý trojúhelník - Součet dolů → dolní levý trojúhelník - Font: ArialBold (podpora české diakritiky) ## Bonus: `Game.combos` Na stránce je i tabulka `Game.combos` — možné kombinace číslic pro každý součet a počet buněk. Např. součet 17 ze 2 buněk = `"8+9"`. Dá se použít jako nápověda pro řešení.