道場 · dojo

SAT道场

SAT 求解器的健身房。把你的求解器编译为 WebAssembly 并提交,它会在一组隐藏的全新公式上评分:数桥谜题、奇偶陷阱、随机 3-SAT、鸽巢和皇后。

排行榜 番付 · banzuke

每个公式的平均燃料(单位:十亿),未解出的公式按预算的两倍计。越低越好。

加载中…

运作方式 稽古 · keiko

一构建

任何能编译到 WASI preview 1 的语言都行:Rust、用 wasi-sdk 的 C 和 C++、Zig、Go。从标准输入读取 DIMACS,并按 SAT 竞赛的格式作答。

$ cargo build --release --target wasm32-wasip1

stdin   p cnf 3 2
        1 -2 0
        2 3 0
stdout  s SATISFIABLE
        v 1 2 -3 0

二训练

用 dojo 工具在公开的开发集上本地给求解器评分。它的运行方式和排行榜完全一致,提交前就能知道分数。

$ cargo install --git https://github.com/
    NoelHuibers/Hashiwokakero dojo --features worker
$ dojo run my-solver.wasm

solved 26/34  PAR-2 4.855 Gfuel

三提交

上传 .wasm 文件。它会在我们自己的机器上,用本赛季的隐藏测试集运行。

四攀升

PAR-2 最低者胜出:即每个公式的平均燃料,未解出的公式按预算的两倍计。

公式

橋

数桥

从 10×10 到 28×28 的数桥谜题编码成的 CNF,不含连通性规则。总是可满足。

偶

数桥奇偶

改动一个数字、使数字总和变为奇数的谜题。每座桥都会让总和加二,所以不可满足。一眼就能看出,用归结却很难证明。

乱

随机 3-SAT

处于相变点的均匀随机 3-SAT,每个变量 4.26 个子句,约一半可满足。

鳩

鸽巢

n+1 只鸽子放进 n 个巢:需要指数长度归结证明的经典问题。另有几个恰好放得下的。

女

皇后

最大 48×48 棋盘上的 N 皇后问题,带几个禁用格。

踏入道场 入門 · nyūmon

加载中…

公平竞赛 礼 · rei

燃

看燃料,不看秒数

每执行一条 WebAssembly 指令消耗一单位燃料,批量内存操作按每字节一单位计。时钟和随机数都有固定种子,所以同一个求解器在任何机器上、任何时候都得到相同分数。

秘

隐藏的全新公式

测试集由每个赛季更换的秘密种子生成,每个公式都经过打乱:变量重命名并取反,子句重新排序。结果只按类别显示,绝不按单个公式显示。

検

每个答案都要验证

模型会代入公式验证。UNSAT 只在我们有证明时才算数:鸽巢和数桥奇偶在构造上就不可满足,其他每个 UNSAT 标签都附有经我们自己的检查器验证过的 DRAT 证明。只要答错一次,提交即被取消资格,所以瞎猜永远不划算。

封

密封的沙箱

没有文件,没有网络,没有环境变量。内存和输出都有上限,提交在一台不存放任何数据的独立机器上运行。

一

一个账号,只计最佳

账号注册满一天才能提交,每个账号和每个网络每天各可提交三次。完全相同的代码会被拒绝,即使改了名或填充了无用数据也一样,只有你最好的一次提交参与排名。

写

禁止抄袭

分数是精确的,所以每个求解器都会留下指纹:它在每个公式上消耗的燃料。表现与他人更早提交一致的提交不参与排名。把副本改到足以逃过检测,它就成了另一个求解器;把它改慢,只会让它排在原版之下。

季

赛季

新赛季会带来新的隐藏测试集,所有提交都会重新评测。

致研究者

燃料是确定性的,所以结果可复现,也能在论文之间比较:注明赛季和开发集种子即可。排行榜以 JSON 形式提供于 /dojo/board.json,评测框架开源。

/dojo/board.jsongithub.com/NoelHuibers/Hashiwokakero/dojo