feat(crossword): add 2025‑12‑21 puzzles and update output generators

- Introduce three new puzzle files for the 2025‑12‑21 theme
- Update main generator to include new data set
- Regenerate pool, report, RSS and theme outputs
- Clean up legacy JSON format in main file
- Ensure consistency across generated assets
This commit is contained in:
mike
2025-12-21 17:41:41 +01:00
parent aa44f89b1b
commit cdb609b746
9 changed files with 1000 additions and 10199 deletions

View File

@@ -0,0 +1,245 @@
{
"date": "2025-12-21",
"theme": "algemeen-1766334982320",
"difficulty": 1,
"rewards": {
"coins": 50,
"stars": 2,
"hints": 1
},
"gridv2": [
"############",
"############",
"##IE####SD##",
"##TRAAKTEN##",
"#####ADEREN#",
"#####REGALE#",
"##BK#D#ERIN#",
"##AR#V#NEEN#",
"###UIL#OLGA#",
"###GROEP####",
"############"
],
"words": [
{
"word": "IE",
"clue": "IE",
"startRow": 2,
"startCol": 2,
"direction": "horizontal",
"answer": "IE",
"arrowRow": 2,
"arrowCol": 1
},
{
"word": "AARDVLO",
"clue": "AARDVLO",
"startRow": 3,
"startCol": 5,
"direction": "vertical",
"answer": "AARDVLO",
"arrowRow": 2,
"arrowCol": 5
},
{
"word": "KDE",
"clue": "KDE",
"startRow": 3,
"startCol": 6,
"direction": "vertical",
"answer": "KDE",
"arrowRow": 2,
"arrowCol": 6
},
{
"word": "TEGENOP",
"clue": "TEGENOP",
"startRow": 3,
"startCol": 7,
"direction": "vertical",
"answer": "TEGENOP",
"arrowRow": 2,
"arrowCol": 7
},
{
"word": "SD",
"clue": "SD",
"startRow": 2,
"startCol": 8,
"direction": "horizontal",
"answer": "SD",
"arrowRow": 2,
"arrowCol": 7
},
{
"word": "TRAAKTEN",
"clue": "TRAAKTEN",
"startRow": 3,
"startCol": 2,
"direction": "horizontal",
"answer": "TRAAKTEN",
"arrowRow": 3,
"arrowCol": 1
},
{
"word": "IT",
"clue": "IT",
"startRow": 2,
"startCol": 2,
"direction": "vertical",
"answer": "IT",
"arrowRow": 1,
"arrowCol": 2
},
{
"word": "ER",
"clue": "ER",
"startRow": 2,
"startCol": 3,
"direction": "vertical",
"answer": "ER",
"arrowRow": 1,
"arrowCol": 3
},
{
"word": "ADEREN",
"clue": "ADEREN",
"startRow": 4,
"startCol": 5,
"direction": "horizontal",
"answer": "ADEREN",
"arrowRow": 4,
"arrowCol": 4
},
{
"word": "BA",
"clue": "BA",
"startRow": 6,
"startCol": 2,
"direction": "vertical",
"answer": "BA",
"arrowRow": 5,
"arrowCol": 2
},
{
"word": "KRUG",
"clue": "KRUG",
"startRow": 6,
"startCol": 3,
"direction": "vertical",
"answer": "KRUG",
"arrowRow": 5,
"arrowCol": 3
},
{
"word": "REGALE",
"clue": "REGALE",
"startRow": 5,
"startCol": 5,
"direction": "horizontal",
"answer": "REGALE",
"arrowRow": 5,
"arrowCol": 4
},
{
"word": "BK",
"clue": "BK",
"startRow": 6,
"startCol": 2,
"direction": "horizontal",
"answer": "BK",
"arrowRow": 6,
"arrowCol": 1
},
{
"word": "ERIN",
"clue": "ERIN",
"startRow": 6,
"startCol": 7,
"direction": "horizontal",
"answer": "ERIN",
"arrowRow": 6,
"arrowCol": 6
},
{
"word": "AR",
"clue": "AR",
"startRow": 7,
"startCol": 2,
"direction": "horizontal",
"answer": "AR",
"arrowRow": 7,
"arrowCol": 1
},
{
"word": "NEEN",
"clue": "NEEN",
"startRow": 7,
"startCol": 7,
"direction": "horizontal",
"answer": "NEEN",
"arrowRow": 7,
"arrowCol": 6
},
{
"word": "UIL",
"clue": "UIL",
"startRow": 8,
"startCol": 3,
"direction": "horizontal",
"answer": "UIL",
"arrowRow": 8,
"arrowCol": 2
},
{
"word": "OLGA",
"clue": "OLGA",
"startRow": 8,
"startCol": 7,
"direction": "horizontal",
"answer": "OLGA",
"arrowRow": 8,
"arrowCol": 6
},
{
"word": "GROEP",
"clue": "GROEP",
"startRow": 9,
"startCol": 3,
"direction": "horizontal",
"answer": "GROEP",
"arrowRow": 9,
"arrowCol": 2
},
{
"word": "SERAREL",
"clue": "SERAREL",
"startRow": 2,
"startCol": 8,
"direction": "vertical",
"answer": "SERAREL",
"arrowRow": 1,
"arrowCol": 8
},
{
"word": "DNELIEG",
"clue": "DNELIEG",
"startRow": 2,
"startCol": 9,
"direction": "vertical",
"answer": "DNELIEG",
"arrowRow": 1,
"arrowCol": 9
},
{
"word": "NENNA",
"clue": "NENNA",
"startRow": 4,
"startCol": 10,
"direction": "vertical",
"answer": "NENNA",
"arrowRow": 3,
"arrowCol": 10
}
]
}

View File

@@ -0,0 +1,245 @@
{
"date": "2025-12-21",
"theme": "algemeen-1766335023861",
"difficulty": 1,
"rewards": {
"coins": 50,
"stars": 2,
"hints": 1
},
"gridv2": [
"############",
"############",
"##IE####SD##",
"##TRAAKTEN##",
"#####ADEREN#",
"#####REGALE#",
"##BK#D#ERIN#",
"##AR#V#NEEN#",
"###UIL#OLGA#",
"###GROEP####",
"############"
],
"words": [
{
"word": "IE",
"clue": "IE",
"startRow": 2,
"startCol": 2,
"direction": "horizontal",
"answer": "IE",
"arrowRow": 2,
"arrowCol": 1
},
{
"word": "AARDVLO",
"clue": "AARDVLO",
"startRow": 3,
"startCol": 5,
"direction": "vertical",
"answer": "AARDVLO",
"arrowRow": 2,
"arrowCol": 5
},
{
"word": "KDE",
"clue": "KDE",
"startRow": 3,
"startCol": 6,
"direction": "vertical",
"answer": "KDE",
"arrowRow": 2,
"arrowCol": 6
},
{
"word": "TEGENOP",
"clue": "TEGENOP",
"startRow": 3,
"startCol": 7,
"direction": "vertical",
"answer": "TEGENOP",
"arrowRow": 2,
"arrowCol": 7
},
{
"word": "SD",
"clue": "SD",
"startRow": 2,
"startCol": 8,
"direction": "horizontal",
"answer": "SD",
"arrowRow": 2,
"arrowCol": 7
},
{
"word": "TRAAKTEN",
"clue": "TRAAKTEN",
"startRow": 3,
"startCol": 2,
"direction": "horizontal",
"answer": "TRAAKTEN",
"arrowRow": 3,
"arrowCol": 1
},
{
"word": "IT",
"clue": "IT",
"startRow": 2,
"startCol": 2,
"direction": "vertical",
"answer": "IT",
"arrowRow": 1,
"arrowCol": 2
},
{
"word": "ER",
"clue": "ER",
"startRow": 2,
"startCol": 3,
"direction": "vertical",
"answer": "ER",
"arrowRow": 1,
"arrowCol": 3
},
{
"word": "ADEREN",
"clue": "ADEREN",
"startRow": 4,
"startCol": 5,
"direction": "horizontal",
"answer": "ADEREN",
"arrowRow": 4,
"arrowCol": 4
},
{
"word": "BA",
"clue": "BA",
"startRow": 6,
"startCol": 2,
"direction": "vertical",
"answer": "BA",
"arrowRow": 5,
"arrowCol": 2
},
{
"word": "KRUG",
"clue": "KRUG",
"startRow": 6,
"startCol": 3,
"direction": "vertical",
"answer": "KRUG",
"arrowRow": 5,
"arrowCol": 3
},
{
"word": "REGALE",
"clue": "REGALE",
"startRow": 5,
"startCol": 5,
"direction": "horizontal",
"answer": "REGALE",
"arrowRow": 5,
"arrowCol": 4
},
{
"word": "BK",
"clue": "BK",
"startRow": 6,
"startCol": 2,
"direction": "horizontal",
"answer": "BK",
"arrowRow": 6,
"arrowCol": 1
},
{
"word": "ERIN",
"clue": "ERIN",
"startRow": 6,
"startCol": 7,
"direction": "horizontal",
"answer": "ERIN",
"arrowRow": 6,
"arrowCol": 6
},
{
"word": "AR",
"clue": "AR",
"startRow": 7,
"startCol": 2,
"direction": "horizontal",
"answer": "AR",
"arrowRow": 7,
"arrowCol": 1
},
{
"word": "NEEN",
"clue": "NEEN",
"startRow": 7,
"startCol": 7,
"direction": "horizontal",
"answer": "NEEN",
"arrowRow": 7,
"arrowCol": 6
},
{
"word": "UIL",
"clue": "UIL",
"startRow": 8,
"startCol": 3,
"direction": "horizontal",
"answer": "UIL",
"arrowRow": 8,
"arrowCol": 2
},
{
"word": "OLGA",
"clue": "OLGA",
"startRow": 8,
"startCol": 7,
"direction": "horizontal",
"answer": "OLGA",
"arrowRow": 8,
"arrowCol": 6
},
{
"word": "GROEP",
"clue": "GROEP",
"startRow": 9,
"startCol": 3,
"direction": "horizontal",
"answer": "GROEP",
"arrowRow": 9,
"arrowCol": 2
},
{
"word": "SERAREL",
"clue": "SERAREL",
"startRow": 2,
"startCol": 8,
"direction": "vertical",
"answer": "SERAREL",
"arrowRow": 1,
"arrowCol": 8
},
{
"word": "DNELIEG",
"clue": "DNELIEG",
"startRow": 2,
"startCol": 9,
"direction": "vertical",
"answer": "DNELIEG",
"arrowRow": 1,
"arrowCol": 9
},
{
"word": "NENNA",
"clue": "NENNA",
"startRow": 4,
"startCol": 10,
"direction": "vertical",
"answer": "NENNA",
"arrowRow": 3,
"arrowCol": 10
}
]
}

View File

@@ -0,0 +1,245 @@
{
"date": "2025-12-21",
"theme": "algemeen-1766335092355",
"difficulty": 1,
"rewards": {
"coins": 50,
"stars": 2,
"hints": 1
},
"gridv2": [
"############",
"############",
"##IA####NE##",
"##TREANNEL##",
"#####DEELEN#",
"#####DEERDE#",
"##AT#E#REET#",
"##ZE#N#ZENO#",
"###ABD#AHOB#",
"###KLANK####",
"############"
],
"words": [
{
"word": "IA",
"clue": "IA",
"startRow": 2,
"startCol": 2,
"direction": "horizontal",
"answer": "IA",
"arrowRow": 2,
"arrowCol": 1
},
{
"word": "ADDENDA",
"clue": "ADDENDA",
"startRow": 3,
"startCol": 5,
"direction": "vertical",
"answer": "ADDENDA",
"arrowRow": 2,
"arrowCol": 5
},
{
"word": "NEE",
"clue": "NEE",
"startRow": 3,
"startCol": 6,
"direction": "vertical",
"answer": "NEE",
"arrowRow": 2,
"arrowCol": 6
},
{
"word": "NEERZAK",
"clue": "NEERZAK",
"startRow": 3,
"startCol": 7,
"direction": "vertical",
"answer": "NEERZAK",
"arrowRow": 2,
"arrowCol": 7
},
{
"word": "NE",
"clue": "NE",
"startRow": 2,
"startCol": 8,
"direction": "horizontal",
"answer": "NE",
"arrowRow": 2,
"arrowCol": 7
},
{
"word": "TREANNEL",
"clue": "TREANNEL",
"startRow": 3,
"startCol": 2,
"direction": "horizontal",
"answer": "TREANNEL",
"arrowRow": 3,
"arrowCol": 1
},
{
"word": "IT",
"clue": "IT",
"startRow": 2,
"startCol": 2,
"direction": "vertical",
"answer": "IT",
"arrowRow": 1,
"arrowCol": 2
},
{
"word": "AR",
"clue": "AR",
"startRow": 2,
"startCol": 3,
"direction": "vertical",
"answer": "AR",
"arrowRow": 1,
"arrowCol": 3
},
{
"word": "DEELEN",
"clue": "DEELEN",
"startRow": 4,
"startCol": 5,
"direction": "horizontal",
"answer": "DEELEN",
"arrowRow": 4,
"arrowCol": 4
},
{
"word": "AZ",
"clue": "AZ",
"startRow": 6,
"startCol": 2,
"direction": "vertical",
"answer": "AZ",
"arrowRow": 5,
"arrowCol": 2
},
{
"word": "TEAK",
"clue": "TEAK",
"startRow": 6,
"startCol": 3,
"direction": "vertical",
"answer": "TEAK",
"arrowRow": 5,
"arrowCol": 3
},
{
"word": "DEERDE",
"clue": "DEERDE",
"startRow": 5,
"startCol": 5,
"direction": "horizontal",
"answer": "DEERDE",
"arrowRow": 5,
"arrowCol": 4
},
{
"word": "AT",
"clue": "AT",
"startRow": 6,
"startCol": 2,
"direction": "horizontal",
"answer": "AT",
"arrowRow": 6,
"arrowCol": 1
},
{
"word": "REET",
"clue": "REET",
"startRow": 6,
"startCol": 7,
"direction": "horizontal",
"answer": "REET",
"arrowRow": 6,
"arrowCol": 6
},
{
"word": "ZE",
"clue": "ZE",
"startRow": 7,
"startCol": 2,
"direction": "horizontal",
"answer": "ZE",
"arrowRow": 7,
"arrowCol": 1
},
{
"word": "ZENO",
"clue": "ZENO",
"startRow": 7,
"startCol": 7,
"direction": "horizontal",
"answer": "ZENO",
"arrowRow": 7,
"arrowCol": 6
},
{
"word": "ABD",
"clue": "ABD",
"startRow": 8,
"startCol": 3,
"direction": "horizontal",
"answer": "ABD",
"arrowRow": 8,
"arrowCol": 2
},
{
"word": "AHOB",
"clue": "AHOB",
"startRow": 8,
"startCol": 7,
"direction": "horizontal",
"answer": "AHOB",
"arrowRow": 8,
"arrowCol": 6
},
{
"word": "KLANK",
"clue": "KLANK",
"startRow": 9,
"startCol": 3,
"direction": "horizontal",
"answer": "KLANK",
"arrowRow": 9,
"arrowCol": 2
},
{
"word": "NELREEH",
"clue": "NELREEH",
"startRow": 2,
"startCol": 8,
"direction": "vertical",
"answer": "NELREEH",
"arrowRow": 1,
"arrowCol": 8
},
{
"word": "ELEDENO",
"clue": "ELEDENO",
"startRow": 2,
"startCol": 9,
"direction": "vertical",
"answer": "ELEDENO",
"arrowRow": 1,
"arrowCol": 9
},
{
"word": "NETOB",
"clue": "NETOB",
"startRow": 4,
"startCol": 10,
"direction": "vertical",
"answer": "NETOB",
"arrowRow": 3,
"arrowCol": 10
}
]
}

View File

@@ -10,216 +10,236 @@
"gridv2": [
"############",
"############",
"###EROTSNI##",
"##AGES##EB##",
"##KNE##ER###",
"##IIL##LEE##",
"###BULKSILO#",
"##BBC##E#ET#",
"##NEONAN#NJ#",
"######RENEE#",
"##IE####SD##",
"##TRAAKTEN##",
"#####ADEREN#",
"#####REGALE#",
"##BK#D#ERIN#",
"##AR#V#NEEN#",
"###UIL#OLGA#",
"###GROEP####",
"############"
],
"words": [
{
"word": "AKI",
"clue": "AKI",
"startRow": 3,
"startCol": 2,
"direction": "vertical",
"answer": "AKI",
"arrowRow": 2,
"arrowCol": 2
},
{
"word": "EROTSNI",
"clue": "EROTSNI",
"word": "IE",
"clue": "IE",
"startRow": 2,
"startCol": 3,
"direction": "horizontal",
"answer": "EROTSNI",
"arrowRow": 2,
"arrowCol": 2
},
{
"word": "AGES",
"clue": "AGES",
"startRow": 3,
"startCol": 2,
"direction": "horizontal",
"answer": "AGES",
"arrowRow": 3,
"answer": "IE",
"arrowRow": 2,
"arrowCol": 1
},
{
"word": "ELSENE",
"clue": "ELSENE",
"startRow": 4,
"word": "AARDVLO",
"clue": "AARDVLO",
"startRow": 3,
"startCol": 5,
"direction": "vertical",
"answer": "AARDVLO",
"arrowRow": 2,
"arrowCol": 5
},
{
"word": "KDE",
"clue": "KDE",
"startRow": 3,
"startCol": 6,
"direction": "vertical",
"answer": "KDE",
"arrowRow": 2,
"arrowCol": 6
},
{
"word": "TEGENOP",
"clue": "TEGENOP",
"startRow": 3,
"startCol": 7,
"direction": "vertical",
"answer": "ELSENE",
"arrowRow": 3,
"answer": "TEGENOP",
"arrowRow": 2,
"arrowCol": 7
},
{
"word": "EB",
"clue": "EB",
"startRow": 3,
"word": "SD",
"clue": "SD",
"startRow": 2,
"startCol": 8,
"direction": "horizontal",
"answer": "EB",
"arrowRow": 3,
"answer": "SD",
"arrowRow": 2,
"arrowCol": 7
},
{
"word": "KNE",
"clue": "KNE",
"startRow": 4,
"word": "TRAAKTEN",
"clue": "TRAAKTEN",
"startRow": 3,
"startCol": 2,
"direction": "horizontal",
"answer": "KNE",
"arrowRow": 4,
"answer": "TRAAKTEN",
"arrowRow": 3,
"arrowCol": 1
},
{
"word": "IT",
"clue": "IT",
"startRow": 2,
"startCol": 2,
"direction": "vertical",
"answer": "IT",
"arrowRow": 1,
"arrowCol": 2
},
{
"word": "ER",
"clue": "ER",
"startRow": 4,
"startCol": 7,
"direction": "horizontal",
"startRow": 2,
"startCol": 3,
"direction": "vertical",
"answer": "ER",
"arrowRow": 4,
"arrowCol": 6
},
{
"word": "ELENE",
"clue": "ELENE",
"startRow": 5,
"startCol": 9,
"direction": "vertical",
"answer": "ELENE",
"arrowRow": 4,
"arrowCol": 9
},
{
"word": "IIL",
"clue": "IIL",
"startRow": 5,
"startCol": 2,
"direction": "horizontal",
"answer": "IIL",
"arrowRow": 5,
"arrowCol": 1
},
{
"word": "LEE",
"clue": "LEE",
"startRow": 5,
"startCol": 7,
"direction": "horizontal",
"answer": "LEE",
"arrowRow": 5,
"arrowCol": 6
},
{
"word": "OTJE",
"clue": "OTJE",
"startRow": 6,
"startCol": 10,
"direction": "vertical",
"answer": "OTJE",
"arrowRow": 5,
"arrowCol": 10
},
{
"word": "BULKSILO",
"clue": "BULKSILO",
"startRow": 6,
"startCol": 3,
"direction": "horizontal",
"answer": "BULKSILO",
"arrowRow": 6,
"arrowCol": 2
},
{
"word": "BBC",
"clue": "BBC",
"startRow": 7,
"startCol": 2,
"direction": "horizontal",
"answer": "BBC",
"arrowRow": 7,
"arrowCol": 1
},
{
"word": "AR",
"clue": "AR",
"startRow": 8,
"startCol": 6,
"direction": "vertical",
"answer": "AR",
"arrowRow": 7,
"arrowCol": 6
},
{
"word": "NEREI",
"clue": "NEREI",
"startRow": 2,
"startCol": 8,
"direction": "vertical",
"answer": "NEREI",
"arrowRow": 1,
"arrowCol": 8
},
{
"word": "NEONAN",
"clue": "NEONAN",
"startRow": 8,
"startCol": 2,
"direction": "horizontal",
"answer": "NEONAN",
"arrowRow": 8,
"arrowCol": 1
},
{
"word": "BN",
"clue": "BN",
"startRow": 7,
"startCol": 2,
"direction": "vertical",
"answer": "BN",
"arrowRow": 6,
"arrowCol": 2
},
{
"word": "EGNIBBE",
"clue": "EGNIBBE",
"startRow": 2,
"startCol": 3,
"direction": "vertical",
"answer": "EGNIBBE",
"arrowRow": 1,
"arrowCol": 3
},
{
"word": "REELUCO",
"clue": "REELUCO",
"startRow": 2,
"startCol": 4,
"direction": "vertical",
"answer": "REELUCO",
"arrowRow": 1,
"word": "ADEREN",
"clue": "ADEREN",
"startRow": 4,
"startCol": 5,
"direction": "horizontal",
"answer": "ADEREN",
"arrowRow": 4,
"arrowCol": 4
},
{
"word": "RENEE",
"clue": "RENEE",
"startRow": 9,
"startCol": 6,
"word": "BA",
"clue": "BA",
"startRow": 6,
"startCol": 2,
"direction": "vertical",
"answer": "BA",
"arrowRow": 5,
"arrowCol": 2
},
{
"word": "KRUG",
"clue": "KRUG",
"startRow": 6,
"startCol": 3,
"direction": "vertical",
"answer": "KRUG",
"arrowRow": 5,
"arrowCol": 3
},
{
"word": "REGALE",
"clue": "REGALE",
"startRow": 5,
"startCol": 5,
"direction": "horizontal",
"answer": "RENEE",
"answer": "REGALE",
"arrowRow": 5,
"arrowCol": 4
},
{
"word": "BK",
"clue": "BK",
"startRow": 6,
"startCol": 2,
"direction": "horizontal",
"answer": "BK",
"arrowRow": 6,
"arrowCol": 1
},
{
"word": "ERIN",
"clue": "ERIN",
"startRow": 6,
"startCol": 7,
"direction": "horizontal",
"answer": "ERIN",
"arrowRow": 6,
"arrowCol": 6
},
{
"word": "AR",
"clue": "AR",
"startRow": 7,
"startCol": 2,
"direction": "horizontal",
"answer": "AR",
"arrowRow": 7,
"arrowCol": 1
},
{
"word": "NEEN",
"clue": "NEEN",
"startRow": 7,
"startCol": 7,
"direction": "horizontal",
"answer": "NEEN",
"arrowRow": 7,
"arrowCol": 6
},
{
"word": "UIL",
"clue": "UIL",
"startRow": 8,
"startCol": 3,
"direction": "horizontal",
"answer": "UIL",
"arrowRow": 8,
"arrowCol": 2
},
{
"word": "OLGA",
"clue": "OLGA",
"startRow": 8,
"startCol": 7,
"direction": "horizontal",
"answer": "OLGA",
"arrowRow": 8,
"arrowCol": 6
},
{
"word": "GROEP",
"clue": "GROEP",
"startRow": 9,
"startCol": 3,
"direction": "horizontal",
"answer": "GROEP",
"arrowRow": 9,
"arrowCol": 5
"arrowCol": 2
},
{
"word": "SERAREL",
"clue": "SERAREL",
"startRow": 2,
"startCol": 8,
"direction": "vertical",
"answer": "SERAREL",
"arrowRow": 1,
"arrowCol": 8
},
{
"word": "DNELIEG",
"clue": "DNELIEG",
"startRow": 2,
"startCol": 9,
"direction": "vertical",
"answer": "DNELIEG",
"arrowRow": 1,
"arrowCol": 9
},
{
"word": "NENNA",
"clue": "NENNA",
"startRow": 4,
"startCol": 10,
"direction": "vertical",
"answer": "NENNA",
"arrowRow": 3,
"arrowCol": 10
}
]
}