Una convoluzione binaria è descritta da un numero M
e viene applicata a un numero N
. Per ogni bit nella rappresentazione binaria di M
, se il bit è impostato ( 1
), il bit corrispondente nell'output è dato da XORing i due bit adiacenti al bit corrispondente in N
(avvolgimento quando necessario). Se il bit non è impostato ( 0
), il bit corrispondente nell'uscita è dato dal bit corrispondente in N
.
Un esempio funzionante (con valori a 8 bit):
- Let
N = 150
,M = 59
. Le loro rappresentazioni binarie sono (rispettivamente)10010110
e00111011
. - Sulla base
M
della rappresentazione binaria, i bit 0, 1, 3, 4 e 5 sono contorti.- Il risultato per il bit 0 è dato dai bit 1 e 7 di XORing (dal momento che ci avvolge), cedendo
1
. - Il risultato per il bit 1 è dato dai bit XORing 0 e 2, che danno
0
. - Il risultato per il bit 2 è dato dal bit originale 2, cedendo
1
. - Il risultato per il bit 3 è dato da XORing bit 2 e 4, cedendo
0
. - Il risultato per il bit 4 è dato da XORing bit 3 e 5, cedendo
0
. - Il risultato per il bit 5 è dato dai bit XORing 4 e 6, che danno
1
. - I risultati per i bit 6 e 7 sono dati dai bit originali 6 e 7, che producono
0
e1
.
- Il risultato per il bit 0 è dato dai bit 1 e 7 di XORing (dal momento che ci avvolge), cedendo
- L'output è quindi
10100110
(166
).
La sfida
Dato N
e M
prodotto il risultato dell'esecuzione della convoluzione binaria descritta da M
upon N
. L'input e l'output possono essere in qualsiasi formato conveniente, coerente e inequivocabile. N
e M
saranno sempre nell'intervallo (inclusivo) [0, 255]
(numeri interi senza segno a 8 bit) e le loro rappresentazioni binarie dovrebbero essere riempite a 8 bit per eseguire la convoluzione binaria.
Casi test
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