notebookvb
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# 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í.
|
||||
Reference in New Issue
Block a user