0

Python3.3でコンソールバージョンのothelloまたはreversiを作成するプログラムを作成しています。私は、ユーザーが4〜16のEVEN行番号と4〜16のEVEN列番号を入力する必要があるボードを作成中です。ボードの中央に最初の4つのピースを配置する、ユーザー定義のグリッド上の4つの平方数を決定する関数またはアルゴリズムを作成するにはどうすればよいですか?ありがとう!

4

1 に答える 1

0

行数と列数を と の値とするrowscols、使用する行数はrows/2-1rows/2です。(たとえば、rows==12値が 5 と 6 の場合。) 同様に、使用する列番号はcols/2-1cols/2です。

ボードが線形配列として表され、行のセルが隣接して格納されている場合、 と言ってlr =(rows+1)*cols//2、セル 'lr'、lr-1lr-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 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

つまり、(4,6) の場合の添字は (8, 9, 14, 15) であり、(6,4) の場合の添字は (9, 10, 13, 14) です。

偶数の整数の場合、2 は正確な除数であるため、/ を使用した結果は、Python 2 (整数除算が切り捨てられる) と Python 3 (切り捨てられない) の両方で同じになると思います。または、//演算子を使用して除算を確実に切り捨てることができます。

rowscolsが のような式で偶数であることをテストできることに注意してください(rows|cols)&1。どちらかが奇数の場合は 1、そうでない場合は 0 です。

于 2013-03-05T03:14:46.050 に答える