2015-09-20 18 views
0

所以基本上我問的是完全一樣的,這個人問一年前:Calculation of all possible mutations of a nonogram被關閉不明,但我不明白爲什麼這將是。計算所有可能的行組合滿足其行約束在一個非圖中

回顧確切的問題。在nonograms行和列可填寫不同的方式,必須滿足收縮。作爲一個例子,如果一行具有約束[2,3,2]和長度10,則意味着必須填充2個新單元格,然後是空白,然後是3個前景,空白,最後是2個前景。

所有可能的組合將被:

[2,3,2]:XX XXX _ _ _ XX
[2,3,2]:XX XXX _ _ _ XX
[2 1,3,2]:XX _ _ _ XXX XX
[2,3,2]:_ _ XX XXX XX _

我想到它會很容易創建計算所有可能的組合爲一般功能任何行長和約束,但我整個週末都在嘗試這個,這讓我瘋狂!很感謝任何形式的幫助。

+1

您可以顯示*您已完成的工作*以及缺陷如何? –

回答

1

我建議你認爲這是一個組合的問題:

鑑於約束[2,3,2],你基本上要具備以下條件:
xx_xxx_xx
剩下的問題是你在哪裏放置你的空間。由於你有3組x s,你有4個地方可以放置它們。你的例子顯示在第三組之後放置唯一可用空間,第二組在第一組之後,在第一組之前。

總而言之,計算出您有多少空閒空間(n = total length - number of x s - (number of sets - 1))。現在使用組合101來計算將k相同空格放入n可能位置的所有組合。一旦你有了名單 - 你很好走。

+0

非常感謝您的幫助,我現在正在實施一項工作。真正幫助我的是用包含每個可能位置空白量的列表來思考(正如你所建議的那樣)。而不是試圖計算像我的例子中的確切解決方案,這將是[[1,1,0,1,1,1,0,1,1,0],[1,1,0,1,1,1 ,0,0,1,1],[1,1,0,0,1,1,1,0,1,1],[0,1,1,0,1,1,1,0,1 ,1]]。計算可能空白組合的列表非常有幫助,例如:[[0,0,0,1],[0,0,1,0],[0,1,0, 0],[1,0,0,0]]並從那裏計算實際的行組合。 – Synthic

+0

以及遞歸解決它。即使嘗試解決這樣一個無遞歸組合問題,我也是一個傻瓜。 – Synthic