Une convolution binaire est décrite par un nombre M
et est appliquée à un nombre N
. Pour chaque bit dans la représentation binaire de M
, si le bit est défini ( 1
), le bit correspondant dans la sortie est donné en XORant les deux bits adjacents au bit correspondant dans N
(enroulant autour si nécessaire). Si le bit n'est pas défini ( 0
), le bit correspondant dans la sortie est donné par le bit correspondant dans N
.
Un exemple travaillé (avec des valeurs 8 bits):
- Laissez
N = 150
,M = 59
. Leurs représentations binaires sont (respectivement)10010110
et00111011
. - Sur la base de
M
la représentation binaire de, les bits 0, 1, 3, 4 et 5 sont convolus.- Le résultat pour le bit 0 est donné par XORing bits 1 et 7 (puisque nous bouclons), ce qui donne
1
. - Le résultat pour le bit 1 est donné par XORing bits 0 et 2, ce qui donne
0
. - Le résultat pour le bit 2 est donné par le bit 2 d'origine, ce qui donne
1
. - Le résultat pour le bit 3 est donné par les bits XORing 2 et 4, ce qui donne
0
. - Le résultat pour le bit 4 est donné par les bits XORing 3 et 5, ce qui donne
0
. - Le résultat pour le bit 5 est donné par les bits XORing 4 et 6, ce qui donne
1
. - Les résultats pour les bits 6 et 7 sont donnés par les bits d'origine 6 et 7, ce qui donne
0
et1
.
- Le résultat pour le bit 0 est donné par XORing bits 1 et 7 (puisque nous bouclons), ce qui donne
- La sortie est donc
10100110
(166
).
Le défi
Étant donné N
et M
, affichez le résultat de l'exécution de la convolution binaire décrite par M
sur N
. L'entrée et la sortie peuvent être dans n'importe quel format pratique, cohérent et sans ambiguïté. N
et M
sera toujours dans la plage (inclusive) [0, 255]
(entiers non signés 8 bits), et leurs représentations binaires doivent être remplies à 8 bits pour effectuer la convolution binaire.
Cas de 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
la source
Réponses:
JavaScript (ES6), 31 octets
la source
Python 2, 35 octets
la source
n=255
?J, 34 octets
Approche directe qui applique le processus défini dans le défi. Prend l'entrée comme un tableau
[n, m]
.Formulaires sept smileys,
[:
,:(
,:1
,(8
,8#
,#:
et:]
.Usage
la source
code machine x64, 17 octets
Démonté:
Convient pour la convention d'appel Win64 (arguments dans rcx, rdx).
la source
Haskell, 66 octets
Fonctionne comme prévu lorsqu'il est appelé avec des
Word8
données. Remplacez(255-m)
parcomplement m
(+5 octets) pour faire fonctionner la fonction avec n'importe quel type de données intégral non signé.la source