トップページに戻る    次の増井さんの書籍の問題へ    前の増井さんの書籍の問題へ

Q48 グレイコードのループ


C#のソース

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        Solve("808080");
        Solve("abcdef");
    }

    static void Solve(string pSyokou)
    {
        var SuuretuList = new List<int>();
        int CurrKou = Convert.ToInt32(pSyokou, 16);

        for (int I = 1; I <= 100; I++) {
            Console.WriteLine("{0,2}項目は、{1}", I, CurrKou.ToString("x"));
            if (SuuretuList.Contains(CurrKou)) break;
            SuuretuList.Add(CurrKou);

            int NextKou = DeriveGrayCode(CurrKou);
            CurrKou = NextKou;
        }
    }

    //グレイコードに変換した値を求める
    static int DeriveGrayCode(int pCurrKou)
    {
        int a = pCurrKou;
        int b = pCurrKou / 16;

        int WillReturn = 0;
        int Jyousuu = 1;
        do {
            int ModVal = (a - b) % 16;
            ModVal *= Jyousuu;
            WillReturn += ModVal;

            Jyousuu *= 16;
            a /= 16; b /= 16;
        } while (a > 0 || b > 0);
        return WillReturn;
    }
}


実行結果

 1項目は、808080
 2項目は、888888
 3項目は、800000
 4項目は、880000
 5項目は、808000
 6項目は、888800
 7項目は、800080
 8項目は、880088
 9項目は、808080
 1項目は、abcdef
 2項目は、a11111
 3項目は、a70000
 4項目は、ad9000
 5項目は、a3c700
 6項目は、a99b90
 7項目は、af02e7
 8項目は、a512c9
 9項目は、abc1ad
10項目は、a11593
11項目は、a7044a
12項目は、ad9406
13項目は、a3cbc6
14項目は、a99f1a
15項目は、af0629
16項目は、a516c7
17項目は、abc56b
18項目は、a11915
19項目は、a70884
20項目は、ad980c
21項目は、a3cf8c
22項目は、a99394
23項目は、af0a6b
24項目は、a51ac5
25項目は、abc929
26項目は、a11d97
27項目は、a70cce
28項目は、ad9c02
29項目は、a3c342
30項目は、a9971e
31項目は、af0ead
32項目は、a51ec3
33項目は、abcde7
34項目は、a11119
35項目は、a70008
36項目は、ad9008
37項目は、a3c708
38項目は、a99b98
39項目は、af02ef
40項目は、a512c1
41項目は、abc1a5
42項目は、a1159b
43項目は、a70442
44項目は、ad940e
45項目は、a3cbce
46項目は、a99f12
47項目は、af0621
48項目は、a516cf
49項目は、abc563
50項目は、a1191d
51項目は、a7088c
52項目は、ad9804
53項目は、a3cf84
54項目は、a9939c
55項目は、af0a63
56項目は、a51acd
57項目は、abc921
58項目は、a11d9f
59項目は、a70cc6
60項目は、ad9c0a
61項目は、a3c34a
62項目は、a99716
63項目は、af0ea5
64項目は、a51ecb
65項目は、abcdef


解説

ナイーブに実装してます。