Eine binäre Faltung wird durch eine Zahl beschrieben M
und auf eine Zahl angewendet N
. Für jedes Bit in der Binärdarstellung von M
, wenn das Bit gesetzt ist ( 1
), wird das entsprechende Bit in der Ausgabe durch XOR-Verknüpfung der zwei neben dem entsprechenden Bit in liegenden Bits gegeben N
(bei Bedarf umlaufend ). Ist das Bit nicht gesetzt ( 0
), so wird das entsprechende Bit im Ausgang durch das entsprechende Bit in gegeben N
.
Ein funktionierendes Beispiel (mit 8-Bit-Werten):
- Lassen Sie
N = 150
,M = 59
. Ihre binären Darstellungen sind (bzw.)10010110
und00111011
. - Basierend auf
M
der Binärdarstellung werden die Bits 0, 1, 3, 4 und 5 zusammengefasst.- Das Ergebnis für Bit 0 wird durch XOR-Verknüpfung der Bits 1 und 7 (da wir herumlaufen) gegeben, was ergibt
1
. - Das Ergebnis für Bit 1 wird durch XOR-Verknüpfung der Bits 0 und 2 erhalten
0
. - Das Ergebnis für Bit 2 wird durch das ursprüngliche Bit 2 gegeben, was ergibt
1
. - Das Ergebnis für Bit 3 wird durch XOR-Verknüpfung der Bits 2 und 4 erhalten
0
. - Das Ergebnis für Bit 4 wird durch XOR-Verknüpfung der Bits 3 und 5 erhalten
0
. - Das Ergebnis für Bit 5 wird durch XOR-Verknüpfung der Bits 4 und 6 erhalten
1
. - Die Ergebnisse für die Bits 6 und 7 sind durch die ursprünglichen Bits 6 und 7 gegeben und ergeben
0
und1
.
- Das Ergebnis für Bit 0 wird durch XOR-Verknüpfung der Bits 1 und 7 (da wir herumlaufen) gegeben, was ergibt
- Die Ausgabe ist also
10100110
(166
).
Die Herausforderung
Gegeben N
und der M
Ausgang des Ergebnis der Durchführung des binären Faltungs beschriebenen M
auf N
. Die Ein- und Ausgabe kann in jedem geeigneten, konsistenten und eindeutigen Format erfolgen. N
und M
wird immer im Bereich (einschließlich) liegen [0, 255]
(8-Bit-Ganzzahlen ohne Vorzeichen), und ihre binären Darstellungen sollten auf 8 Bits aufgefüllt werden, um die binäre Faltung durchzuführen.
Testfälle
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
quelle
Antworten:
JavaScript (ES6), 31 Byte
quelle
Python 2, 35 Bytes
quelle
n=255
?J, 34 Bytes
Einfacher Ansatz, der den in der Herausforderung definierten Prozess anwendet. Übernimmt die Eingabe als Array
[n, m]
.Formen sieben smileys,
[:
,:(
,:1
,(8
,8#
,#:
, und:]
.Verwendung
quelle
x64-Maschinencode, 17 Byte
Zerlegt:
Geeignet für die Win64-Aufrufkonvention (Argumente in rcx, rdx).
quelle
Haskell, 66 Bytes
Funktioniert beim Aufrufen mit
Word8
Daten wie vorgesehen . Ersetzen Sie(255-m)
durchcomplement m
(+5 Byte), damit die Funktion mit jedem vorzeichenlosen ganzzahligen Datentyp funktioniert.quelle