2.8 KiB
2.8 KiB
SudokuKiller — technické poznámky
Přehled skriptů
Stahování PDF (původní pipeline)
| Skript | Popis |
|---|---|
stahni_killer_sudoku.py |
Stáhne puzzle + solution PDF z dailykillersudoku.com |
stahni_greater_than.py |
Stáhne Greater-Than variantu, přejmenuje existující |
import_do_mysql.py |
Importuje PDF soubory do MySQL tabulky sudoku_killer (binární bloby) |
30_BatchCrop.py |
Ořeže PDF (odstraní hlavičky/patičky), uloží zpět do DB |
Strukturovaná data (nový pipeline)
| Skript | Popis |
|---|---|
stahni_killer_structured.py |
Stáhne strukturovaná data (cage definice + řešení) z webu do sdílené tabulky puzzles |
preskumaj_killer_data*.py |
Průzkumné skripty pro reverzní inženýrství datového formátu |
Zdroj dat
Web: https://www.dailykillersudoku.com/
Každý puzzle má stránku /puzzle/{N} s inline JSON daty v HTML:
DKS.puzzle = new DKS.Puzzle({
"id": 376,
"date": "2009-05-04",
"difficulty": 4,
"board_base64": "AZoACQAE...",
"solution_base64": "AJoICQIG...",
"puzzle_type": 1
})
Dekódování base64
board_base64
- 2 bajty header (puzzle_type, flags)
- 81 × 2 bajty = 162 bajtů — cage ID pro každou buňku (uint16 big-endian)
- N bajtů — součet pro každou klec (1 bajt = max 255)
solution_base64
- 2 bajty header
- 81 bajtů — čísla řešení (řádek po řádku)
Typy puzzle
| puzzle_type | game_type v DB | Popis |
|---|---|---|
| 1 | killer_sudoku |
Killer Sudoku — klece se součty |
| 2 | killer_sudoku_gt |
Greater-Than Killer Sudoku — klece + nerovnosti |
Obtížnost
Škála 1–10 (z webu), uložena v difficulty.
MySQL — původní tabulka sudoku_killer
Obsahuje binární PDF v file_puzzle / file_solution / file_puzzle_cropped.
- 19 106 KillerSudoku (puzzle 1–31414, 2009–2026)
- 11 405 GreaterThan (puzzle 1730–31416, 2010–2026)
MySQL — sdílená tabulka puzzles
Strukturovaná data (cage definice + řešení):
game_type='killer_sudoku'/'killer_sudoku_gt'difficulty='1'až'10'puzzle= klece ve formátusum,r0c1r0c2|sum,r3c4r3c5|...solution= flat string 81 číslicextra={"grid_size": 9, "puzzle_number": 376, "original_difficulty": 4}source='dailykillersudoku.com'
Layout a tisk
V podadresáři Testy/ jsou experimentální skripty pro:
- Ořezávání PDF (ray-cast detekce mřížky)
- Škálování a umístění 2 puzzle na A4
- Layout konfigurace (
layouts.json)
Závislosti
requests,beautifulsoup4— HTTP + HTML parsingfitz(PyMuPDF) — PDF manipulace, ray-cast croppingpypdf— PDF čtení/zápisplaywright— průzkumné skripty (není potřeba pro produkční stahování)tqdm— progress bar