私は4つのバイナリビットを持っています
Bit 3 Bit 2 Bit 1 Bit 0
通常、答えは簡単です。2^4、つまり 16 の異なる組み合わせです。次のようになります。
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
ただし、LSB (ビット 0) は反復ごとに状態が変化します。
すべての反復でビットの状態が 1 回だけ変化するアルゴリズムが必要です。つまり、すべてのビットが MSB (ビット 3) のように動作する必要があります。
これどうやってするの?
編集
ほとんどの人は、可能な解決策が 5 つしかないことに収束しているようです。ただし、これは値の開始点と終了点があることを前提としています。これは問題ではないので、よりよく説明するために実際のシナリオを示します。
4 つの出力を提供するデジタル目覚まし時計があるとします。各出力は、特定の時間にオンになり、特定の時間にオフになるようにプログラムでき、互いに独立してプログラムできます。出力 1 は午前 1 時にオンになり、午前 3 時にオフになるようにプログラムでき、出力 2 は午後 7 時にオンになり、午前 2 時にオフになるようにプログラムできます。各出力をオンにしておくことができる時間に制限はありません。
今度は、この目覚まし時計をコンピューターに接続して、現在の正確な時刻にできるだけ近づけたいと考えています。たとえば、時計が午後 2 時 15 分である場合、コンピュータはアラームが午後 12 時から午後 6 時の範囲内にあることを認識します。可能な限り最小の範囲を取得できるようにしたい。私が得ることができる最小の可能な範囲は何ですか?