作爲一個實驗,我試圖創建一個神奇的方形程序,用九個數字檢查每個可能的正方形。對於那些不知道是誰,幻方是數字1-9的一個3x3的網格,每行,列和對角線加起來15例如:「魔方」算法
我將如何去用Lua桌子檢查每個廣場?我從下表開始:
local sq = {
1, 1, 1,
1, 1, 1
1, 1, 1
}
我該如何去檢查每個表的順序是否正確?我能夠在紙上畫出我的想法,但我不完全確定如何將它翻譯成代碼。我已經創建了函數來檢查廣場是否是'魔術'(下面),但我不確定如何以正確的方式增加每個數字。
local isMagic = function(s)
return (
s[1] + s[2] + s[3] == 15 and
s[4] + s[5] + s[6] == 15 and
s[7] + s[8] + s[9] == 15 and
s[1] + s[4] + s[7] == 15 and
s[2] + s[5] + s[8] == 15 and
s[3] + s[6] + s[9] == 15 and
s[1] + s[5] + s[9] == 15 and
s[3] + s[5] + s[7] == 15
)
end
這裏的關鍵詞是* backtracking *。參見http://stackoverflow.com/questions/4927778/brute-force-magic-squares。 – lhf 2014-10-20 01:03:41
如果您正在檢查所有可能的1-9號正方形,您可以考慮生成陣列的所有排列。下面是一個解決方案,帶有一個簡單的Java代碼鏈接:http://stackoverflow.com/questions/20272570/any-language-find-all-permutations-of-elements-in-a-vector-using-swapping – 2014-10-20 01:54:47
「我將如何使用帶有Lua的桌子來檢查每個方格」以及「我將如何按照正確的順序檢查每張桌子」以及「如何以正確的方式增加每個數字」這些問題並不清楚。你已經能夠檢查給定的方塊是否有魔力,你是否試圖產生一些解決方案?通常開始廣場已經有1 2或3個單元已經填充。 – Schollii 2014-10-20 02:34:57