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
źródło
Odpowiedzi:
JavaScript (ES6), 31 bajtów
źródło
Python 2, 35 bajtów
źródło
n=255
?J, 34 bajty
Proste podejście, które stosuje proces zdefiniowany w wyzwaniu. Pobiera dane wejściowe jako tablicę
[n, m]
.Formy siedem emotikony,
[:
,:(
,:1
,(8
,8#
,#:
, i:]
.Stosowanie
źródło
kod maszynowy x64, 17 bajtów
Zdemontowano:
Nadaje się do konwencji wywoływania Win64 (argumenty w rcx, rdx).
źródło
Haskell, 66 bajtów
Działa zgodnie z przeznaczeniem, gdy jest wywoływany z
Word8
danymi. Wymienić(255-m)
zcomplement m
(+ 5 bajtów) do pracy z każdej funkcji unsigned integralną typu danych.źródło