不知道有没有前辈提出来,在做五子棋AI算法的时候,如果从头开始遍历棋盘数组,会低效又消耗内存。
写了一个半径算法给大家分享下:<script type="text/javascript">
/* the radius method for loop */
var center = [9, 9];
var index;
for (var i = 1, len1 = center[0]; i <= len1; i++) {
index = [center[0] - i, center[1]];
var counter = 0;
var step = [i, i * 2, i * 2, i * 2, i - 1];
var route = [
function() { index[1] --; },
function() { index[0] ++; },
function() { index[1] ++; },
function() { index[0] --; },
function() { index[1] --; }
];
for (var j = 0, len2 = i * 8; j < len2; j++) {
// document.write(index + "<br />");
if (counter == step[0]) {
counter = 0;
step.shift();
route.shift();
}
if (counter < step[0]) {
counter++;
route[0]();
}
}
}
</script>有关算法的详细介绍,请见:
http://www.wushen.biz/original/programs/?id=20100731160824
写了一个半径算法给大家分享下:<script type="text/javascript">
/* the radius method for loop */
var center = [9, 9];
var index;
for (var i = 1, len1 = center[0]; i <= len1; i++) {
index = [center[0] - i, center[1]];
var counter = 0;
var step = [i, i * 2, i * 2, i * 2, i - 1];
var route = [
function() { index[1] --; },
function() { index[0] ++; },
function() { index[1] ++; },
function() { index[0] --; },
function() { index[1] --; }
];
for (var j = 0, len2 = i * 8; j < len2; j++) {
// document.write(index + "<br />");
if (counter == step[0]) {
counter = 0;
step.shift();
route.shift();
}
if (counter < step[0]) {
counter++;
route[0]();
}
}
}
</script>有关算法的详细介绍,请见:
http://www.wushen.biz/original/programs/?id=20100731160824
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货