C# で基本的なセル オートマトンを実行するコードを開発しています。Microsoft Visual Studio Express 2012 で作業しています。
全体的に私のコードは機能していますが、結果をコンソールに書き込むときに問題があります。
入力として uint を取り、その uint のビット表現に対応する文字列を返すメソッド「brep」を含むクラス「bitrep」を作成しました。
この問題の目的のために、返される文字列を 1 の場合は黒 (塗りつぶし) の四角、0 の場合は白 (空) の四角にする必要があります。
class bitrep
{
private uint t = 1;
private int i = 0;
private StringBuilder val = new StringBuilder();
public string brep(uint n)
{
val.Clear();
for (i = 31; i >= 0; i--)
{
test = (t & n >> i) == 1;
if (test)
val.Append((char)9632); // Produce a solid square for 1's
else
val.Append((char)9633); // Produce an empty square for 0's.
}
return val.ToString();
}
}
上記のコードでプログラムを実行すると、出力の例は次のようになります。
???????????????■????????????????
??????????????■■■???????????????
Press any key to continue . . .
実線/黒の四角は 1 を表しますが、白の四角の代わりに 0 は ? として書き込まれます。
0 の白い四角形 (Unicode UTF-16 (10 進数) エンコーディング 9633 を持つ) の望ましい出力が正しく表示されないのはなぜですか?