Una convolución binaria se describe mediante un número M
y se aplica a un número N
. Para cada bit en la representación binaria de M
, si se establece el bit ( 1
), el bit correspondiente en la salida se obtiene XORing los dos bits adyacentes al bit correspondiente en N
(envolviendo cuando sea necesario). Si el bit no está establecido ( 0
), el bit correspondiente en la salida viene dado por el bit correspondiente en N
.
Un ejemplo trabajado (con valores de 8 bits):
- Deje
N = 150
,M = 59
. Sus representaciones binarias son (respectivamente)10010110
y00111011
. - Según
M
la representación binaria de los bits 0, 1, 3, 4 y 5 están convolucionados.- El resultado para el bit 0 está dado por XORing bits 1 y 7 (ya que terminamos), dando lugar
1
. - El resultado para el bit 1 viene dado por XORing de los bits 0 y 2, produciendo
0
. - El resultado para el bit 2 viene dado por el bit 2 original, dando como resultado
1
. - El resultado para el bit 3 viene dado por XORing de los bits 2 y 4, produciendo
0
. - El resultado para el bit 4 viene dado por XORing de los bits 3 y 5, produciendo
0
. - El resultado para el bit 5 viene dado por XORing de los bits 4 y 6, produciendo
1
. - Los resultados para los bits 6 y 7 están dados por los bits originales 6 y 7, produciendo
0
y1
.
- El resultado para el bit 0 está dado por XORing bits 1 y 7 (ya que terminamos), dando lugar
- La salida es así
10100110
(166
).
El reto
Dado N
y M
, salida el resultado de realizar la convolución binaria descrita por M
sobre N
. La entrada y salida pueden estar en cualquier formato conveniente, consistente y sin ambigüedades. N
y M
siempre estará en el rango (incluido) [0, 255]
(enteros sin signo de 8 bits), y sus representaciones binarias deben rellenarse a 8 bits para realizar la convolución binaria.
Casos de prueba
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
fuente
Respuestas:
JavaScript (ES6), 31 bytes
fuente
Python 2, 35 bytes
fuente
n=255
?J, 34 bytes
Enfoque directo que aplica el proceso definido en el desafío. Toma la entrada como una matriz
[n, m]
.Formas emoticonos siete,
[:
,:(
,:1
,(8
,8#
,#:
, y:]
.Uso
fuente
código de máquina x64, 17 bytes
Desmontado:
Adecuado para la convención de llamadas Win64 (argumentos en rcx, rdx).
fuente
Haskell, 66 bytes
Funciona según lo previsto cuando se llama con
Word8
datos. Reemplace(255-m)
concomplement m
(+5 bytes) para que la función funcione con cualquier tipo de datos integral sin signo.fuente