add more docs

This commit is contained in:
2026-07-01 22:18:14 +07:00
parent a487ef0dfe
commit 86e23d3a56
5 changed files with 3522 additions and 0 deletions
@@ -0,0 +1,886 @@
{
"pages": [
{
"page": 1,
"cards": [
{
"index": 0,
"asteroidScale": 0.85,
"innerAst": {
"left": 60
},
"badge": {
"left": 36,
"top": 33
}
},
{
"index": 1,
"asteroidScale": 0.95,
"ship": {
"right": -20.5,
"top": -7
},
"innerAst": {
"left": 54,
"top": 61
},
"badge": {
"left": 23
}
},
{
"index": 2,
"ship": {
"right": -24.5,
"top": -7
},
"innerAst": {
"left": 47,
"top": 61
},
"badge": {
"left": 22,
"top": 41
}
},
{
"index": 3,
"ship": {
"right": -14.5,
"top": -9
},
"innerAst": {
"left": 54,
"top": 67
},
"badge": {
"left": 29,
"top": 49
}
},
{
"index": 4,
"asteroidScale": 1.2,
"ship": {
"right": -18.5
},
"innerAst": {
"left": 44,
"top": 51
},
"badge": {
"left": 27
}
},
{
"index": 5,
"ship": {
"right": -20.5
},
"innerAst": {
"left": 53,
"top": 67
},
"badge": {
"left": 24
}
}
]
},
{
"page": 2,
"cards": [
{
"index": 0,
"asteroidScale": 1.95,
"ship": {
"right": -22.5,
"top": -3
},
"innerAst": {
"left": 49,
"top": 42
},
"badge": {
"left": 25,
"top": 33
}
},
{
"index": 1,
"ship": {
"right": -22.5
},
"innerAst": {
"left": 39,
"top": 44
},
"badge": {
"left": 27
}
},
{
"index": 2,
"asteroidScale": 2,
"ship": {
"right": -20.5
},
"innerAst": {
"left": 52,
"top": 60
},
"badge": {
"left": 23,
"top": 37
}
},
{
"index": 3,
"ship": {
"right": -20.5
},
"innerAst": {
"left": 55,
"top": 62
},
"badge": {
"left": 27,
"top": 38
}
},
{
"index": 4,
"ship": {
"right": -20.5,
"top": -7
},
"innerAst": {
"left": 46,
"top": 51
},
"badge": {
"left": 26,
"top": 42
}
},
{
"index": 5,
"ship": {
"right": -22.5,
"top": -7
},
"innerAst": {
"left": 53,
"top": 56
},
"badge": {
"left": 22
}
}
]
},
{
"page": 3,
"cards": [
{
"index": 0,
"ship": {
"right": -14.5,
"top": -9
},
"innerAst": {
"left": 54,
"top": 61
},
"badge": {
"left": 28,
"top": 48
}
},
{
"index": 1,
"ship": {
"right": -22.5,
"top": -9
},
"innerAst": {
"left": 51,
"top": 58
},
"badge": {
"left": 22,
"top": 42
}
},
{
"index": 2,
"ship": {
"right": -18.5,
"top": -7
},
"innerAst": {
"left": 45,
"top": 49
},
"badge": {
"left": 26,
"top": 44
}
},
{
"index": 3,
"ship": {
"right": -20.5,
"top": -3
},
"innerAst": {
"left": 39,
"top": 34
},
"badge": {
"left": 23,
"top": 36
}
},
{
"index": 4,
"ship": {
"right": -16.5,
"top": -3
},
"innerAst": {
"left": 59,
"top": 68
},
"badge": {
"left": 25,
"top": 31
}
},
{
"index": 5,
"innerAst": {
"left": 61,
"top": 75
},
"badge": {
"left": 35,
"top": 32
}
}
]
},
{
"page": 4,
"cards": [
{
"index": 0,
"ship": {
"right": -18.5
},
"innerAst": {
"left": 47,
"top": 49
},
"badge": {
"left": 27,
"top": 36
}
},
{
"index": 1,
"ship": {
"right": -20.5,
"top": -3
},
"innerAst": {
"left": 64,
"top": 43
},
"badge": {
"left": 23,
"top": 35
}
},
{
"index": 2,
"ship": {
"right": -24.5
},
"badge": {
"left": 26
}
},
{
"index": 3,
"innerAst": {
"left": 62,
"top": 72
},
"badge": {
"left": 35,
"top": 32
}
},
{
"index": 4,
"asteroidScale": 2,
"ship": {
"right": -20.5,
"top": -7
},
"innerAst": {
"top": 60
},
"badge": {
"left": 23
}
},
{
"index": 5,
"ship": {
"right": -26.5
},
"innerAst": {
"left": 48,
"top": 56
},
"badge": {
"left": 22,
"top": 40
}
}
]
},
{
"page": 5,
"cards": [
{
"index": 0,
"asteroidScale": 1.25,
"ship": {
"right": -22.5,
"top": -3
},
"innerAst": {
"left": 53,
"top": 51
},
"badge": {
"left": 45,
"top": 78
}
},
{
"index": 1,
"ship": {
"right": -18.5,
"top": -7
},
"innerAst": {
"left": 59,
"top": 67
},
"badge": {
"left": 27,
"top": 35
}
},
{
"index": 2,
"ship": {
"right": -18.5
},
"innerAst": {
"left": 54,
"top": 55
},
"badge": {
"left": 51,
"top": 20
}
},
{
"index": 3,
"ship": {
"right": -18.5
},
"innerAst": {
"left": 56,
"top": 55
},
"badge": {
"left": 18,
"top": 49
}
},
{
"index": 4,
"ship": {
"right": -22.5,
"top": -3
},
"innerAst": {
"left": 44,
"top": 38
},
"badge": {
"left": 24,
"top": 34
}
},
{
"index": 5,
"ship": {
"right": -18.5
},
"innerAst": {
"left": 61,
"top": 49
},
"badge": {
"left": 27,
"top": 36
}
}
]
},
{
"page": 6,
"cards": [
{
"index": 0,
"ship": {
"right": -22.5,
"top": -7
},
"innerAst": {
"left": 52,
"top": 56
},
"badge": {
"left": 23
}
},
{
"index": 1,
"innerAst": {
"left": 73,
"top": 66
},
"badge": {
"left": 36,
"top": 33
}
},
{
"index": 2,
"ship": {
"right": -18.5,
"top": -7
},
"innerAst": {
"left": 66,
"top": 43
},
"badge": {
"left": 24,
"top": 36
}
},
{
"index": 3,
"ship": {
"right": -20.5
},
"innerAst": {
"left": 48,
"top": 53
},
"badge": {
"left": 27,
"top": 40
}
},
{
"index": 4,
"ship": {
"right": -18.5
},
"innerAst": {
"top": 61
},
"badge": {
"left": 27,
"top": 36
}
},
{
"index": 5,
"ship": {
"right": -18.5
},
"innerAst": {
"left": 53,
"top": 61
},
"badge": {
"left": 32,
"top": 43
}
}
]
},
{
"page": 7,
"cards": [
{
"index": 0,
"asteroidScale": 1.35,
"ship": {
"right": -24.5
},
"innerAst": {
"left": 55,
"top": 55
},
"badge": {
"left": 24
}
},
{
"index": 1,
"ship": {
"right": -14.5,
"top": -9
},
"innerAst": {
"left": 56
},
"badge": {
"left": 34,
"top": 48
}
},
{
"index": 2,
"asteroidScale": 2,
"ship": {
"right": -18.5
},
"innerAst": {
"left": 54,
"top": 39
},
"badge": {
"left": 27,
"top": 34
}
},
{
"index": 3,
"ship": {
"right": -22.5
},
"innerAst": {
"left": 54,
"top": 41
},
"badge": {
"left": 27
}
},
{
"index": 4,
"asteroidScale": 1.9,
"ship": {
"right": -20.5,
"top": -7
},
"badge": {
"left": 23,
"top": 37
}
},
{
"index": 5,
"ship": {
"top": -7
},
"innerAst": {
"left": 60
},
"badge": {
"left": 35,
"top": 31
}
}
]
},
{
"page": 8,
"cards": [
{
"index": 0,
"ship": {
"right": -22.5
},
"innerAst": {
"left": 42,
"top": 44
},
"badge": {
"left": 27
}
},
{
"index": 1,
"ship": {
"right": -18.5,
"top": -7
},
"innerAst": {
"left": 48,
"top": 50
},
"badge": {
"left": 27,
"top": 38
}
},
{
"index": 2,
"ship": {
"right": -20.5,
"top": -9
},
"innerAst": {
"left": 55,
"top": 57
},
"badge": {
"left": 23,
"top": 40
}
},
{
"index": 3,
"ship": {
"right": -18.5,
"top": -9
},
"innerAst": {
"left": 49,
"top": 39
},
"badge": {
"left": 26,
"top": 33
}
},
{
"index": 5,
"ship": {
"right": -18.5,
"top": -7
},
"innerAst": {
"left": 62,
"top": 58
},
"badge": {
"left": 26,
"top": 45
}
}
]
},
{
"page": 9,
"cards": [
{
"index": 0,
"ship": {
"right": -20.5,
"top": -7
},
"innerAst": {
"top": 64
},
"badge": {
"left": 24,
"top": 37
}
},
{
"index": 1,
"ship": {
"right": -20.5,
"top": -9
},
"innerAst": {
"left": 49,
"top": 50
},
"badge": {
"left": 28,
"top": 48
}
},
{
"index": 2,
"ship": {
"right": -24.5,
"top": -9
},
"innerAst": {
"left": 39,
"top": 62
},
"badge": {
"left": 22,
"top": 46
}
},
{
"index": 3,
"asteroidScale": 1.95,
"ship": {
"right": -14.5,
"top": -9
},
"innerAst": {
"left": 59,
"top": 59
},
"badge": {
"left": 38,
"top": 44
}
},
{
"index": 4,
"asteroidScale": 1.85,
"ship": {
"right": -20.5,
"top": -7
},
"innerAst": {
"left": 60,
"top": 58
},
"badge": {
"left": 23
}
},
{
"index": 5,
"ship": {
"right": -18.5
},
"innerAst": {
"left": 59,
"top": 52
},
"badge": {
"left": 28,
"top": 35
}
}
]
},
{
"page": 10,
"cards": [
{
"index": 0,
"asteroidScale": 1.95,
"ship": {
"right": -22.5,
"top": -3
},
"innerAst": {
"left": 49,
"top": 42
},
"badge": {
"left": 25,
"top": 33
}
},
{
"index": 1,
"ship": {
"right": -22.5
},
"innerAst": {
"left": 39,
"top": 44
},
"badge": {
"left": 27
}
},
{
"index": 2,
"asteroidScale": 2,
"ship": {
"right": -20.5
},
"innerAst": {
"left": 52,
"top": 60
},
"badge": {
"left": 23,
"top": 37
}
},
{
"index": 3,
"ship": {
"right": -20.5
},
"innerAst": {
"left": 55,
"top": 62
},
"badge": {
"left": 27,
"top": 38
}
},
{
"index": 4,
"ship": {
"right": -20.5,
"top": -7
},
"innerAst": {
"left": 46,
"top": 51
},
"badge": {
"left": 26,
"top": 42
}
},
{
"index": 5,
"ship": {
"right": -22.5,
"top": -7
},
"innerAst": {
"left": 53,
"top": 56
},
"badge": {
"left": 22
}
}
]
}
]
}
@@ -0,0 +1,43 @@
# Cargo Filling — Document 2
Addition crossing the **tens** boundary (odd pages) and the **twenties** boundary (even pages).
10 pages, 6 cards per page, 60 problems total.
Same ships, asteroids, hero/footer images and element positions as Document 1 — **only the numbers changed**
(positions are preserved via `cargo-filling-2.data.json`, copied from Doc 1; page 10 reuses page 2's layout).
## Crossing rule (the only difference from Doc 1)
- **Odd pages (1, 3, 5, 7, 9)** — cross **10**: cargo capacity badge = `10`, A already in cargo (1–9),
N = 10 − A, brace value `10`.
- **Even pages (2, 4, 6, 8, 10)** — cross **20**: cargo capacity badge = `20`, A already in cargo (11–19),
N = 20 − A, brace value `20`.
- **Floating asteroid B is always 1–9** on every page. The child splits B = N + M so A + N hits the boundary.
- Full expression: `A + B = (A + N) + M = C`.
Numbers are **randomly spread**: each page draws 6 **distinct** A values spread across the whole valid
A-range, each paired with a varied B (preferring B values not yet used on the page). Only the constraints
you set apply: asteroid B=1–9, capacity 10/20, crossing with non-zero fill N and non-zero remnant M.
Generated with seeded RNG (`mulberry32(20260622)`) in `/tmp/build-cf2.cjs` so the set is reproducible.
Card 1 of page 1 is the worked **example** (answers filled in handwriting style): A=5, B=9 → N=5, M=4, C=14.
## Numbers per page (A + B)
| Page | Boundary | Problems (A+B) |
|------|----------|----------------|
| 1 | 10 | 5+9, 3+8, 4+7, 2+9, 6+6, 9+4 |
| 2 | 20 | 19+3, 17+4, 15+6, 18+7, 14+9, 12+9 |
| 3 | 10 | 3+8, 5+6, 6+7, 2+9, 8+5, 4+8 |
| 4 | 20 | 12+9, 18+3, 19+2, 14+9, 17+5, 16+7 |
| 5 | 10 | 9+2, 3+8, 5+7, 7+5, 8+3, 4+9 |
| 6 | 20 | 16+5, 14+7, 17+9, 12+9, 19+8, 15+6 |
| 7 | 10 | 5+6, 6+5, 7+7, 8+4, 3+8, 2+9 |
| 8 | 20 | 18+9, 12+9, 17+5, 19+3, 15+8, 13+9 |
| 9 | 10 | 8+6, 4+7, 5+9, 9+3, 6+5, 3+8 |
| 10 | 20 | 17+7, 18+6, 13+8, 16+9, 15+6, 19+2 |
## Hero orientation
Odd pages = hero on the right (`flex-row-reverse`), even pages = hero on the left (matches Doc 1 convention).
Page 10 reuses page 2's hero/footer (splitter6 / cabin3).
File diff suppressed because it is too large Load Diff