給定的數字1,2,3,4,5,6,7,8我需要它們來替換x's,以便每個邊加起來的數字中心。找到一個數字序列來填充一個方格的算法
*-*---*-*
|x| x |x|
*-*---*-*
|x| 12|x|
*-*---*-*
|x| x |x|
*-*---*-*
由於一開始我都環繞在數字中尋找所有可能的組合。
var range = [1,2,3,4,5,6,7,8];
var target = 12;
var matches = [];
for (x = 0; x < range.length; x ++){
for (y = 0; y < range.length; y ++){
if (y === x){
continue;
}
for (z = 0; z < range.length; z ++){
if (z === y || z === x){
continue;
}
if (range[x] + range[y] + range[z] === target){
matches.push([range[x], range[y], range[z]]);
}
}
}
}
接下來,我也加入了數字加在一起端到端
for (j=0; j < matches.length; j++){
for (k=0; k < matches.length; k++){
if (j==k) continue;
//if (matches[j][2] != matches[k][0]) continue;
for (l=0; l < matches.length; l++){
if (l==j || l==k) continue;
//if (matches[k][2] != matches[l][0]) continue;
for (m=0; m < matches.length; m++){
if (m==j || m==k || m==l) continue;
if (matches[l][2] != matches[m][0]) continue;
if (matches[m][2] != matches[j][0]){
console.log(matches[j], matches[k], matches[l], matches[m]);
}
}
}
}
}
我還沒有現在把支票以確保數字只能使用一次的每個組合,這是我會怎樣解決這個。
我真的很想知道一個整體更好的方法來解決這個問題。
StackOverflow是爲了解決非工作代碼。如果您想了解如何更好地編寫代碼,請轉至codereview.stackexchange.com。 – samanime
這是一個好點 –
@samanime我不知道我同意。我認爲這是因爲破碎的代碼,但不是因爲性能增強或改進建議。 – evolutionxbox