什麼是 Kakurasu?
Kakurasu 在方形盤面上進行,每一格不是塗黑就是留白。盤面四周有提示:每一列右側一個數字,每一行下方一個數字。上緣與左緣的小權重顯示每格值多少。
各欄由左到右權重為 1、2、3…,各列由上到下權重為 1、2、3…。塗黑一格時,它的欄權重加到該列總和,列權重加到該行總和。你的任務就是把恰當的格子塗黑,使每個總和都符合提示。
- 每一格不是塗黑就是留白。
- 塗黑的格子把它的欄號加到該列總和。
- 塗黑的格子把它的列號加到該行總和。
- 右側提示是該列的目標總和。
- 下方提示是該行的目標總和。
如何讀一列或一行
一次處理一條線。列提示就是被塗黑格子的欄權重之和:解一列就是找出 1 到 N 中哪些權重相加等於提示,每個至多用一次。
極端值很好處理。提示為 0 表示整條線留白;提示等於最大值(1+2+…+N)表示整條線全黑。
- 提示 0:整條線留白。
- 提示等於最大值:整條線全黑。
- 提示 N 可以是最後一欄的單一格,或一個組合。
- 大提示會逼出遠端的高權重格子。
- 小提示會逼出近端的低權重格子。
核心技巧:唯一的和
由於 1 到 N 的每個權重至多用一次,許多提示只有一種拆法。提示 1 是第 1 欄那格;提示 3 可以是第 3 欄,或第 1、2 欄合起來。
接著讓列與行對話。為了滿足某列而塗黑一格,也會在它的行內固定一個值,行提示會加以印證或排除。
更多推理方式
找出一條線中最大的權重。若提示比該權重還小,那個遠端格子必定留白;若少了它就湊不到提示,它必定塗黑。同樣的推理也適用於各行。
標記排除掉的格子,和塗黑確定的格子一樣有用。隨著提示一個個變綠,其餘格子也被逼出。