Add verified diamond and heart pattern examples

This commit is contained in:
Yaossg 2026-10-17 00:04:47 +08:00
parent 7952207735
commit 2eeb2ff0d4
7 changed files with 189 additions and 1 deletions

View file

@ -16,6 +16,56 @@ mkdir -p artifacts
默认编译 `sm_86` 并附带 PTX,适合本机 RTX 3060 Laptop。换架构时用 `-B` 强制重建;仅改变 Make 变量不会使已有文件自动过期。
## 已验证实例:5×5 爱心
种子 **`22428888508636`**,左上角区块 **`(-5,-147)`**(方块原点 `(-80,-2352)`)。每格一个区块,向右为 `+X`、向下为 `+Z`;16 格 `#` 必须是史莱姆,9 格 `.` 必须不是:
```text
.#.#.
#####
#####
.###.
..#..
```
```sh
./bench/bin/slime-bench --radius 256 \
--pattern-file bench/patterns/heart-5x5.txt \
--position-batch 256 --max-results 1000
# 单点复查,收集全部普通分支匹配:应得到 1,181 个种子
./bench/bin/slime-bench --x -5 --z -147 --radius 0 \
--pattern-file bench/patterns/heart-5x5.txt --max-results 2000
```
RTX 3060 Laptop 实测:131,585 个锚点,普通分支共找到 1,456 个种子/位置匹配,扫描约 2.439 秒(含设备初始化的端到端约 2.620 秒)。保存的 1,000 个搜索样本,以及单点复查的全部 1,181 个种子,都通过独立 Python 实现的 Java 整数回绕及 `Random.nextInt(10)` 精确逐格验证。已知种子及计时见 [results/heart-5x5-example.json](results/heart-5x5-example.json)。GPU 回归检查单点计数、已知种子及全部样本,搜索计数不包含拒绝重抽补扫。
## 已验证实例:4×4 菱形
种子 **`126066202091224`**,左上角区块 **`(-1,-63)`**(方块原点 `(-16,-1008)`)。每格是一个区块,向右为 `+X`、向下为 `+Z`;`#` 为史莱姆,`.` 必须不是:
```text
.##.
####
####
.##.
```
```sh
# 搜索原点周围;这里只限制保存的样本数,仍会完整扫描
./bench/bin/slime-bench --radius 64 \
--pattern-file bench/patterns/diamond-4x4.txt \
--position-batch 128 --max-results 1000
# 单点复查:普通分支应得到 11,142 个种子
./bench/bin/slime-bench --x -1 --z -63 --radius 0 \
--pattern-file bench/patterns/diamond-4x4.txt --max-results 64
```
RTX 3060 Laptop 实测:8,321 个锚点,普通分支找到 2,457,370 个种子/位置匹配,扫描约 0.924 秒(含设备初始化的端到端约 1.098 秒)。保存的 1,000 个样本全部通过独立 Python 实现的 Java 整数回绕及 `Random.nextInt(10)` 精确验证,包括四个非史莱姆角。样本顺序由 GPU 调度决定,不保证固定种子在截取的前 64 个样本中。已知种子及验证记录见 [results/diamond-4x4-example.json](results/diamond-4x4-example.json),GPU 回归会核对单点计数并独立验证返回样本。
此实例证明自定义正负约束搜索可行;搜索计数仍不包含拒绝重抽补扫。
## 自定义图案:6×6 苦力怕
`--pattern` 接受 `/` 分隔的行,或用 `--pattern-file` 读取每行一排的文本文件。`#` 必须是史莱姆区块,`.` 必须不是,`?` 不限制。支持非正方形,宽、高分别为 1~64,至少含一个 `#`;不能与 `--size` 同时指定。不自动旋转或镜像。