2 D配列振り子出力

1452 ワード

整理なし
例題:2次元配列の1行目は小文字、2行目は大文字、振り子式出力(AaCcEe...WwYyZzXxVv.....DdBb)本題は2つのことをすれば、1つ目は記憶、2つ目は出力、記憶と出力を同じサイクルに入れ、出力のアルファベットは必ず配列の中に存在しなければならない.ここで私は記憶と出力を同期する:全部で26文字で26回循環し、同じアルファベットを循環して格納して出力するたびに、配列は通常のAaBbCcDdの順序で格納され、格納と出力の順序は振り子式に合致する.
// , , 
    char[][] n = new char[2][26];
    for(int i = 0; i < 26; i++)
    {
        if(i < 13)
        {//0 a  2 c  4   e   12 y
            n[0][2 * i] = (char)(2 * i + 65);
            n[1][2 * i] = (char)(2 * i + 97);
            System.out.print(n[0][2 * i]);
            System.out.print(n[1][2 * i]);
        }
        else
        {//25 z 23 x  ...                   //13 -  25   14  -  23  15 - 21
            n[0][51 - 2 * i] = (char)(51 - 2 * i + 65);
            n[1][51 - 2 * i] = (char)(51 - 2 * i + 97);
            System.out.print(n[0][51 - 2 * i]);
            System.out.print(n[1][51 - 2 * i]);
        }
    }

最初の13文字はアルファベット順(2 D配列の下付き)0,2,4,6,...,24(2 i)上位13出力アルファベット順(振り子の上位13項)Aa,Cc,Ee,...,Yy(2 i + 65/2 i + 97) 0 - Aa,2 - Cc,4 - Ee,...,12 - Yy
後13個の格納アルファベット順(2次元配列の下付き)25,23,21,19,...,1(51-2 i)後13出力アルファベット順(振り子の後13項)Zz,Xx,Vv,...,Bb (51 - 2 i + 65/51 - 2 i + 97) 25 - Zz,23 - Xx,21 - Vv,...,1 - Bb
2 iと51-2 iがどのように計算されたかについては、0 2 4 6...偶数用i(0,1,2,3...)とわかりやすいの一般式表示は2 i 25 23 21 19...i(13,14,15,16...)との対応関係は、iが増加するごとに下付き文字が2つ下がることがわかりやすいので、iは下付き文字と線形関係になり、傾きは-2であり、数値を持ち込んで下付き文字=51-2 iを算出する
間違いがあれば指摘してください.もっと良い方法があれば、討論を歓迎します.