在网上看到一个2048很好的计算原理,这里记录一下。以水平方向的一组数据为例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
var arr0=[0,0,2,0]; var arr1=[0,2,0,0]; var arr2=[2,0,0,0]; var arr3=[2,8,4,2]; var play = function(arr){ let indexI,len = arr.length; for(let i = 0; i < len; i++){ indexI = -1; for(let j = i+1; j < len; j++){ if (arr[j] !== 0) { indexI = j; break; } } if (indexI !== -1) { if (arr[i] === 0) { arr[i] = arr[indexI]; arr[indexI] = 0; i-=1; }else if (arr[i] === arr[indexI]) { arr[i] = arr[i]*2; arr[indexI] = 0; } } } return arr; } play(arr0); |