在Tick Tack Toe中生成每个可能的位置

时间:2017-05-21 19:38:05

标签: javascript generator

我想生成每个单一的方式,一个刻度钉脚趾板可以看。我想要的数据格式是一个简单的数组,看起来像这样: [“”,“X”,“O”,  “”,“X”,“X”,  “”,“O”,“O”]

我需要知道女巫也是空的。我不知道该怎么做。应迭代每一个,然后遍历后面的每一个......

让我们说我是第三个。我是否应该回到第二位,为每个可能的状态做一个,然后进入第一个?

我需要一个递归函数吗?

顺便说一下,这实际上是用JavaScript制作的截图。我确实有一些代码。

The board

1 个答案:

答案 0 :(得分:2)

基本上你可以考虑只使用数字

  • 0表示空位,
  • 1为第一个用户
  • 2为第二个用户

棋盘的整个空间是九个区域,最多可以填充玩家2的所有位置。

这个数值是222222222 3 = 19682 10

从这个值开始,你必须跳过像最后一个那样的棋盘状态,这是不可能的,因为它错过了玩家1并且它有很多地方有玩家2。

要检查哪个(结束)位置有效,您需要检查包含玩家1和2 +/- 1的相同计件数,



var value = parseInt('222222222', 3);

console.log(value);




要获取所有位置,您可以将零形式迭代到19682,将数字转换为带有radix = 3的字符串,并将字符串填充为零,长度为9。

然后检查电路板并消除不可能的状态。



function pad9(v) { return ('000000000' + v).slice(-9); }
var max = parseInt('222222222', 3), 
    i,
    output = '';

for (i = 0; i <= max; i++) {
    // add some checks brefore output
    output += pad9(i.toString(3)) + '\n';
}
document.getElementById('out').innerHTML = output;
&#13;
<pre id="out"></pre>
&#13;
&#13;
&#13;