Splot binarny jest opisany liczbą M
i jest stosowany do liczby N
. Dla każdego bitu w reprezentacji binarnej M
, jeśli bit jest ustawiony ( 1
), odpowiedni bit na wyjściu jest podawany przez XORing dwóch bitów sąsiadujących z odpowiednim bitem w N
(owijanie w razie potrzeby). Jeśli bit nie jest ustawiony ( 0
), odpowiedni bit na wyjściu jest podawany przez odpowiedni bit w N
.
Sprawdzony przykład (z wartościami 8-bitowymi):
- Pozwól
N = 150
,M = 59
. Ich reprezentacje binarne to (odpowiednio)10010110
i00111011
. - W oparciu o
M
reprezentację binarną, bity 0, 1, 3, 4 i 5 są splecione.- Wynik dla bitu 0 jest podawany przez XORing bity 1 i 7 (ponieważ się owijamy), dając
1
. - Wynik dla bitu 1 podawany jest przez bity XORing 0 i 2, dając
0
. - Wynik dla bitu 2 jest podawany przez oryginalny bit 2, dając
1
. - Wynik dla bitu 3 podawany jest przez bity XORing 2 i 4, dając
0
. - Wynik dla bitu 4 jest podawany przez bity 3 i 5 XORing, dając
0
. - Wynik dla bitu 5 jest podawany przez bity 4 i 6 XORing, dając
1
. - Wyniki dla bitów 6 i 7 podano w oryginalnych bitach 6 i 7, uzyskując
0
i1
.
- Wynik dla bitu 0 jest podawany przez XORing bity 1 i 7 (ponieważ się owijamy), dając
- Dane wyjściowe to zatem
10100110
(166
).
Wyzwanie
Biorąc pod uwagę, N
a M
wyjście wynikiem wykonywania binarny splot opisaną przez M
po N
. Dane wejściowe i wyjściowe mogą mieć dowolny dogodny, spójny i jednoznaczny format. N
i M
zawsze będzie w zakresie (włącznie)[0, 255]
(8-bitowe liczby całkowite bez znaku), a ich reprezentacje binarne powinny zostać uzupełnione do 8 bitów w celu wykonania splotu binarnego.
Przypadki testowe
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