Hinweis: Die erste Hälfte dieser Herausforderung stammt von Martin Enders vorheriger Herausforderung, Visualize Bit Weaving .
Die esoterische Programmiersprache evil hat eine interessante Operation für Bytewerte, die sie "Weben" nennt.
Es ist im Wesentlichen eine Permutation der acht Bits des Bytes (es spielt keine Rolle, von welchem Ende aus wir zu zählen beginnen, da das Muster symmetrisch ist):
- Bit 0 wird nach Bit 2 verschoben
- Bit 1 wird nach Bit 0 verschoben
- Bit 2 wird nach Bit 4 verschoben
- Bit 3 wird nach Bit 1 verschoben
- Bit 4 wird nach Bit 6 verschoben
- Bit 5 wird nach Bit 3 verschoben
- Bit 6 wird nach Bit 7 verschoben
- Bit 7 wird nach Bit 5 verschoben
Der Einfachheit halber sind hier drei weitere Darstellungen der Permutation. Als Zyklus:
(02467531)
Als Zuordnung:
57361402 -> 76543210 -> 64725031
Und als Liste von Paaren des Mappings:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
Nach dem 8
Weben wird das Byte im Wesentlichen zurückgesetzt.
Zum Beispiel wird das Weben der Zahl 10011101
(die sich 157
in der Basis 10 befindet) ergeben 01110110
(die sich 118
in der Basis 10 befindet).
Eingang
Es gibt nur 256
gültige Eingaben, nämlich alle ganzen Zahlen zwischen 0
und255
einschließlich. Dies kann in jeder Basis angenommen werden, muss aber konsistent sein und Sie müssen es angeben, wenn die von Ihnen gewählte Basis nicht die Basis zehn ist.
Sie dürfen Ihre Eingaben nicht auf Null setzen.
Ausgabe
Sie sollten das Ergebnis des Bitwebens in einer beliebigen Basis ausgeben, die auch konsistent sein und angegeben werden muss, wenn nicht die Basis zehn.
Sie können Ihre Ausgänge auf null setzen.
Siehe auch: Visualize Bit Weaving