# nonogram 能量區
[TOC]
## 什麼是nonogram呢?
數織(nonogram)是一種邏輯遊戲,以猜謎的方式繪畫黑白點陣圖。在一個網格中,每一行和列都有一組數,玩家需根據它們來填滿或留空格子,最後就可以由此得出一幅圖畫。例如,「4 8 3」的意思就是指該行或列上有三條獨立的線,分別佔了4、8和3格,而每條線最少要由一個空格分開。傳統上,玩家是以黑色填滿格子,和以「×」號標記一定不需要填充的格子。就此來看,這和踩地雷十分相似。但跟踩地雷不同的是,即使填錯了格子,也不會即時出局(大部分)。數織是一個NP完全的問題。
## nonogram的解謎小技巧
### 盡量的填充
玩家可以利用數組盡量的填充格子。
如果數字等於行高或列寛的話,該行所有格仔都要填滿。
如果不是的話,玩家則可以假設每條線只有由一個空格分隔,把線組推到可移動的空間的最盡;然後,把線組推到另一個盡頭。兩者重疊的填充部份就是一定要填充的格子。
* 例如:

可得出這結論:

* 又例如:

可得出這結論:

### 盡量的標空
除了盡量的填充之外,玩家亦可以把一定不可能要填上的空格用「×」號標記起來,從而減少需要考慮的格子。
如果數字是零的話,該行所有格仔都需留空(玩家可用「×」號標上)。
即使不是零,玩家也可以根據已填充的格子,把線推到可移動的空間的最盡,再把線推到另一盡頭。兩者重疊的留空部份就是一定不需要填上的空格。
假設玩家因為之前的推算,現已得出以下結果:

如果把線填滿,可以有以下兩個極端的可能性:

因此可得出這結論:

又如果該行或列中有些空格已經不足之放上任何一條線,那些空格也是可以標空的。例如:

玩家可以不用考慮右邊的空格:

### 連接或分離鄰近的線
如果兩條鄰近的線由一個空格分隔的話,玩家可以用以下的推論嘗試把它填充或標空:
如果把它們連接起來,會令線條過長的話,該空格應該標空。
如果把它們分隔,會令線條數目過多的話,該空格應該填充。
例子如下:

經過推論後:

因為需要盡量的填充和標空,聰明的玩家在這例子可能會直接跳到這步:

### 利用矛盾推論
在一些難度較高的遊戲中,玩家可能不能利用以上簡單的推論方法來解謎。這時玩家可以先假定一個空格為需要填上的,然後繼續解答。但當遇到矛盾的話,玩家需要把遊戲回退到假定前的狀態,因為矛盾証明了之前的假定是錯誤的。玩家亦可把該空格標空,因為它一定不是需要填充的格了。
###### tags: `資研寒訓`
{"metaMigratedAt":"2023-06-15T19:25:04.502Z","metaMigratedFrom":"Content","title":"nonogram 能量區","breaks":true,"contributors":"[{\"id\":\"e1ee0c9e-bd6e-4880-a2bd-ae2ff6cdfd5f\",\"add\":1545,\"del\":0}]"}