0

奇数次元の正方形の 2 次元配列からいくつかの値を並べ替える必要があります。一種のらせん状の正方形の動きで中心から外に出るように反復する方法に興味があります

言葉で説明するのは難しいので、数字は 0 から arraylength*arraylength-1 までの反復の状態を表す ( 10 以降の数字は桁がなくなったのでアルファベット) ( a = 10, b = 11、c = 12...)

このような:

fghij
e456k
d307l
c218m
ba9on

ご覧のとおり、円運動で中心から外に向かっています。円を塗りつぶすときは、外層から外側に向かって開始します(たとえば、1から2へのステップまたは8から9へのステップ)。

次のように始めるのが理にかなっていると思います。

for (int i = 0; i < array.length()/2; i++)
    for (int j = 0; i < i*8 || i == 0 && j == 0; j++)
        ....

j は i レベルのフィールドの数を表しているので、次のように反復します: i*8 2 番目のレイヤーには 1*8=8 フィールドがあり、3 番目の 2*8 = 16 で 4 番目の 3* 8 = 24 など. 1 つしかない中央のものを除く

任意のプログラミング言語で自由に答えてください ;)... Fortran を除きます。その場合、あなたはあなたの人生を再考する必要があります

4

0 に答える 0