我想生成一个文本文件,其中包含所有19,683个 Tic-Tac- Toe电路板布局,结构为0 =空白,1 = X和2 =O。不幸的是,数学不是我的强项,我似乎找不到任何示例在任何地方。
我向你保证,这不是为了功课。我打算通过Minimax计算器运行此数据,以便生成包含RGB值的图像,该值表示基于电路板设置的最佳移动。我正在为不支持功能的平台开发井字游戏(它是事件驱动的),因此我将游戏中的板子转换为数字,然后在图像中查找像素的RGB,以指示最佳效果是。这是一个厚脸皮的解决方法,但是它不需要比145x145像素的图像更多的RAM(145x145 = 21,025,因此每个像素有效地代表了基于电路板的推荐移动)。这也意味着我不必花费CPU时间,这是另一个优点。
由于您需要电路板布局,因此数量很少(19683年)。
您可以通过蛮力生成所有这些。每个盒子只有3种可能性。并且有9个盒子,只需遍历所有盒子。
编辑:
int c = 0; while (c < 262144){ bool valid = (c & 3) < 3; valid &= ((c >> 2) & 3) < 3; valid &= ((c >> 4) & 3) < 3; valid &= ((c >> 6) & 3) < 3; valid &= ((c >> 8) & 3) < 3; valid &= ((c >> 10) & 3) < 3; valid &= ((c >> 12) & 3) < 3; valid &= ((c >> 14) & 3) < 3; valid &= ((c >> 16) & 3) < 3; if (valid){ int i = c; int j = 0; while (j < 9){ cout << (i & 3) << " "; i >>= 2; j++; } cout << endl; } c++; }
这将打印出所有19,683个电路板布局。我不确定您想要什么格式,但是从输出中提取出来应该很容易。