58 lines
1.7 KiB
Markdown
58 lines
1.7 KiB
Markdown
# 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).
|