notebookvb

This commit is contained in:
Vladimir Buzalka
2026-05-08 13:30:47 +02:00
parent ee6fd79f5c
commit c9903646f1
20 changed files with 2024 additions and 56 deletions
+57
View File
@@ -0,0 +1,57 @@
# 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 | 14 |
| 5x5 | 5×5 | 15 |
| 6x6 | 6×6 | 16 |
| 8x8 | 8×8 | 18 |
## 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 ah, řádek=číslo 18)
### 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).