ネストされた if ステートメントを反復ごとに新しい値で反復することは可能ですか? 私は1次元のセルオートマトンを構築しようとしています(宿題のために、私はそれを否定できません).次のコードが間違いなく保証するので、私はC#に完全に慣れていません. 私は、利用可能な最も簡単で基本的な DIY の方法を使用してこのプログラムを作成しようとしましたが、わだち掘れに陥りました。
長さ 8 の 1 と 0 の文字列があるとします。
string y;
y = "11110000";
この設定を 3 つの 8 つの部分文字列セットに分割したいと思います。各セットは y の値とその両側の単一の値で構成されます。したがって、0 から数えると、3 番目のセットは 110 になり、7 番目は 001 になります。ただし、部分文字列は 1 番目から 6 番目のセットのみを提供します。これは、y の周りで好きなようにループできないため、次のように定義しました-
y1=y.Substring(7,1)+y+y.Substring(0,1);
y1 を使用して、必要なすべての部分文字列を取得できました。これらは、基本的に次のように定義されていました-
string a0, a1, a2, a3, a4, a5, a6, a7;
a0 = y1.Substring(0, 3);
a1 = y1.Substring(1, 3);
a2 = y1.Substring(2, 3);
a3 = y1.Substring(3, 3);
a4 = y1.Substring(4, 3);
a5 = y1.Substring(5, 3);
a6 = y1.Substring(6, 3);
a7 = y1.Substring(7, 3);
次世代のセル オートマトンのルールは、このプログラムのユーザー次第です。つまり、ユーザーは部分文字列かどうか、たとえば 111->0 か 1 のいずれかをすべての反復で選択できます。各部分文字列に対して次の方法でifテーブルを(非常に多く)使用しました
{
if (a0=="000")
{
Console.Write(a);
}
else if (a0=="001")
{
Console.Write(b);
}
else if (a0 =="010")
{
Console.Write(c);
}
else if (a0 == "011")
{
Console.Write(d);
}
else if (a0 == "100")
{
Console.Write(e);
}
else if (a0 == "101")
{
Console.Write(f);
}
else if (a0 == "110")
{
Console.Write(g);
}
else if (a0 == "111")
{
Console.Write(h);
}
}
ここで、a、b、c、d、e、f、g、h は int であり、ユーザーが選択したルールです。たとえば、ユーザーが各セット 000 が 1 の値になるように決定したとします。その場合、a=1 になります。b は {0,0,1} に対応し、c は {0,1,0} に対応します。ただし、この方法のかなり明白な問題は、取得できない int の世代が 1 つしかないことです。y1 をこの新しい世代 (文字列に変換されたもの) に置き換えたいと思います。これが不可能な場合はお知らせください。