道場 · 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