バイナリ畳み込みは数値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
タイトルが間違っていると思います。「バイナリ革命」である必要があります:)
—
ルドルフジェリン