生活随笔
收集整理的這篇文章主要介紹了
2048游戏 JavaScript实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
字節(jié)跳動筆試題
參考Google2015校園招聘在線筆試題2–2048游戲
k記錄要被放置的位置索引
1.k位置元素是0,將e[i]移到e[k]
2.k位置非零:
(1)e[i]==e[k]相同,碰撞,e[k]×=2,k移到下一個位置(++k或–k)
(2)e[i]!=e[k]不同,k移到下一個位置(++k或–k),將e[i]移到e[k]
let n
= 1;
let arr
= [[0, 0, 0, 0], [0, 0, 2, 2], [0, 2, 8, 8], [2, 4, 2, 16]];
if (n
== 1) {for (let j
= 0; j
< 4; ++j
) {let k
= 0;for (let i
= 1; i
< 4 ; ++i
) {if (0 == arr
[i
][j
]) continue;if (0 == arr
[k
][j
]) {arr
[k
][j
] = arr
[i
][j
];arr
[i
][j
] = 0;} else if (arr
[i
][j
] == arr
[k
][j
]) {arr
[k
][j
] = arr
[i
][j
]<<1;arr
[i
][j
] = 0;++k
;} else {++k
;if (k
!= i
) {arr
[k
][j
] = arr
[i
][j
];arr
[i
][j
] = 0;}}}}
}else if (n
== 2) {for (let j
= 0; j
< 4; ++j
) {let k
= 4 - 1;for (let i
= 4 - 2; i
>= 0; --i
) {if (0 == arr
[i
][j
])continue;if (0 == arr
[k
][j
]) {arr
[k
][j
] = arr
[i
][j
];arr
[i
][j
] = 0;} else if (arr
[i
][j
] == arr
[k
][j
]) {arr
[k
][j
] = arr
[i
][j
]<<1;arr
[i
][j
] = 0;--k
;} else {--k
;if (k
!= i
) {arr
[k
][j
] = arr
[i
][j
];arr
[i
][j
] = 0;}}}}
}else if (n
== 3) {for (let i
= 0; i
< 4; ++i
) {let k
= 0;for (let j
= 1; j
< 4; ++j
) {if(0==arr
[i
][j
])continue;if(0==arr
[i
][k
]){arr
[i
][k
]=arr
[i
][j
];arr
[i
][j
]=0;}else if(arr
[i
][j
]==arr
[i
][k
]){arr
[i
][k
]=arr
[i
][j
]<<1;arr
[i
][j
]=0;++k
;}else{++k
;if(k
!=j
){arr
[i
][k
]=arr
[i
][j
];arr
[i
][j
]=0;}}}}
}else{for (let i
= 0; i
< 4-1; ++i
) {let k
= 4-1;for (let j
= 4-2; j
>=0; --j
) {if(0==arr
[i
][j
])continue;if(0==arr
[i
][k
]){arr
[i
][k
]=arr
[i
][j
];arr
[i
][j
]=0;}else if(arr
[i
][j
]==arr
[i
][k
]){arr
[i
][k
]=arr
[i
][j
]<<1;arr
[i
][j
]=0;--k
;}else{--k
;if(k
!=j
){arr
[i
][k
]=arr
[i
][j
];arr
[i
][j
]=0;}}}}
};
console
.log(arr
);
復(fù)雜度O(n^2)
總結(jié)
以上是生活随笔為你收集整理的2048游戏 JavaScript实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。