バイナリ畳み込みは数値Mで記述され、数値に適用されNます。のバイナリ表現の各ビットについてM、ビットが設定されている場合(1)、出力の対応するビットは、対応するビットに隣接する2ビットをXORすることで与えられますN(必要に応じて折り返します)。ビットが設定されていない場合(0)、出力の対応するビットはの対応するビットによって与えられNます。
実用的な例(8ビット値):
- ましょう
N = 150、M = 59。それらのバイナリ表現は(それぞれ)10010110と00111011です。 Mのバイナリ表現に基づいて、ビット0、1、3、4、および5が畳み込まれます。- ビット0の結果は、ビット1と7をXORすることで得られ
1ます(折り返すため)。 - ビット1の結果は、ビット0と2のXOR演算によって得られ
0ます。 - ビット2の結果は、元のビット2で与えられ、を生成し
1ます。 - ビット3の結果は、ビット2と4のXORによって得られ
0ます。 - ビット4の結果は、ビット3と5のXOR演算によって得られ
0ます。 - ビット5の結果は、ビット4と6のXORによって得られ
1ます。 - ビット6と7の結果は、元のビット6と7で与えられ、とを生成
0し1ます。
- ビット0の結果は、ビット1と7をXORすることで得られ
- したがって、出力は
10100110(166)です。
チャレンジ
とが与えられたときN、on Mによって記述されたバイナリ畳み込みを実行した結果を出力しMますN。入力および出力は、便利で一貫性があり、明確な形式である場合があります。Nそして、M常に(包括的)範囲[0, 255](8ビット符号なし整数)にあり、バイナリ畳み込みを実行するために、バイナリ表現を8ビットにパディングする必要があります。
テストケース
150 59 -> 166
242 209 -> 178
1 17 -> 0
189 139 -> 181
215 104 -> 215
79 214 -> 25
190 207 -> 50
61 139 -> 180
140 110 -> 206
252 115 -> 143
83 76 -> 31
244 25 -> 245
24 124 -> 60
180 41 -> 181
105 239 -> 102
215 125 -> 198
49 183 -> 178
183 158 -> 181
158 55 -> 186
215 117 -> 198
255 12 -> 243
タイトルが間違っていると思います。「バイナリ革命」である必要があります:)
—
ルドルフジェリン