私は1次元Convayのライフゲームプログラムをやろうとしていますが、世代が過ぎるたびにプログラムは余分な数字を生成し続けます。コード:私は、所望の出力がエラー:ビット単位の操作で余分な数字を取得する
10110
00011
00110
10111
01111
01011
編集だろうこの
10110
10011
100110
101111
1011110
1001001
のような出力を取得しています
3
01011
(3世代) のような入力で
int generation=IntegerparseInt(in.nextLine().trim());
long cells=Long.parseLong(input1, 2);
for(int i=0;i<generation;i++)//Assume
{
long newa=cells>>1;
long newb=cells<<1;
System.out.println(Long.toBinaryString(newb));//For testing purpose
cells=newa^newb;
System.out.println(Long.toBinaryString(cells));//For testing purpose
}
:ちゃんテストコードを銀杏:
for(int i=0;i<generation;i++)
{
long newa=cells>>1;
long newb=cells<<1;
System.out.println(Long.toBinaryString(newb));
System.out.println(Long.toBinaryString(newa));
cells=newa^newb;
System.out.println(Long.toBinaryString(cells));//For testing purpose
}
出力することである:
10110
101
10011
100110
1001
101111
1011110
10111
1001001
なぜ初心者くさいなります1000?それは1110ではないでしょうか? – Spano
おっと!あなたは正しいです、私は私の答えを修正しました。しかし、細胞が0でない限り、余分な数字が残っています。 –
特定の数値でキャップする方法はありますか? – Spano