# DailyCalcudoku — technické poznámky ## Přehled skriptů | Skript | Popis | |--------|-------| | `preskumaj_calcudoku.py` | Průzkumný — vytáhne `gameLevels` z JS kontextu stránky | | `stahni_calcudoku.py` | Stáhne data z webu a uloží do MySQL (celý rok najednou) | | `vykresli_calcudoku.py` | Generuje PDF z dat v MySQL (reportlab, vektorové) | ## Zdroj dat Stránka: https://www.solitaire.org/daily-calcudoku/ Stejná architektura jako Kakuro/Str8ts — `game.php` načte `gameLevels` s daty pro celý rok (366 dní × 4 velikosti). Klíče `"MM-DD"`, bez roku. Data se nemění přes rok — stačí jednorázové stažení v lednu. ## Obtížnosti (velikosti mřížek) | Klíč | Rozměr | Číslice | |------|--------|---------| | 4x4 | 4×4 | 1–4 | | 5x5 | 5×5 | 1–5 | | 6x6 | 6×6 | 1–6 | | 8x8 | 8×8 | 1–8 | ## Datová struktura `gameLevels` Každý záznam je pole dvou stringů: `[cages, solution]` ### Cages (definice klecí) Klece oddělené `|`, každá ve formátu `target,operator,cells`: ``` 3,*,a1b1|8,+,a2b2a3|2,/,c4d4 ``` - `target` = cílová hodnota - `operator` = `+`, `-`, `*`, `/` - `cells` = seznam buněk (sloupec=písmeno a–h, řádek=číslo 1–8) ### Solution (řešení) Flat string číslic, řádek po řádku: ``` 1342213442133421 (4×4 = 16 znaků) ``` ## MySQL tabulka `puzzle.puzzles` Sdílená tabulka s ostatními puzzle. Pro Calcudoku: - `game_type` = `'calcudoku'` - `difficulty` = `'4x4'` / `'5x5'` / `'6x6'` / `'8x8'` - `puzzle` = cage definice (cages string) - `solution` = flat string řešení - `extra` = `{"grid_size": 4}` / `5` / `6` / `8` - `source` = `'solitaire.org'` Stav: celý rok 2026 naplněn (1460 řádků = 365 dní × 4 velikosti).