一种计算游戏板中四个方格的平方数的算法?

时间:2013-03-05 02:58:11

标签: python

我正在创建一个程序,在python 3.3上创建othello或reversi的控制台版本。我正在创建电路板,要求用户输入4-16之间的偶数行号和4-16之间的偶数列号。如何创建一个函数或算法来确定用户定义网格上的四个正方形数字,这些正方形数字将最初的四个部分放在板的中间?谢谢!

1 个答案:

答案 0 :(得分:0)

假设行数和列数是rowscols的值,要使用的行号是rows/2-1rows/2。 (例如,如果rows==12值为5和6.)同样,要使用的列号为cols/2-1cols/2

注意,如果电路板表示为线性阵列,并且如果一行的单元格相邻存储,则可以说lr =(rows+1)*cols//2,并初始化单元格'lr',lr-1,{{1 }和lr-cols作为中心单元格。这相当于上面的公式。例如:

lr-cols-1

产生

for rows in (4,6,8):
    for cols in (4,6,8):
        lr = (rows+1)*cols//2
        r = rows//2
        c = cols//2
        print rows, cols, ':\t', r,c, '\t', lr-cols-1, '\t', lr-cols, '\t', lr-1, '\t', lr, '\t', r*cols+c

也就是说,(4,6)案例的下标是(8,9,14,15),而(6,4)案例的下标是(9,10,13,14)。

对于偶数整数,2是一个精确的除数,所以我认为/ 2的结果在Python 2(整数除法截断)和Python 3(它没有)中都是相同的。或者您可以使用4 4 : 2 2 5 6 9 10 10 4 6 : 2 3 8 9 14 15 15 4 8 : 2 4 11 12 19 20 20 6 4 : 3 2 9 10 13 14 14 6 6 : 3 3 14 15 20 21 21 6 8 : 3 4 19 20 27 28 28 8 4 : 4 2 13 14 17 18 18 8 6 : 4 3 20 21 26 27 27 8 8 : 4 4 27 28 35 36 36 运算符来确保截断除法。

注意,您可以测试//rows甚至是cols之类的表达式,如果其中任何一个是奇数,则为1,否则为0.