Wir definieren den ASCII Odd / Even Cipher über den folgenden Pseudocode:
Define 'neighbor' as the characters adjacent to the current letter in the string
If the one of the neighbors is out of bounds of the string, treat it as \0 or null
Take an input string
For each letter in the string, do
If the 0-based index of the current letter is even, then
Use the binary-or of the ASCII codes of both its neighbors
Else
If the ASCII code of the current letter is odd, then
Use the binary-or of itself plus the left neighbor
Else
Use the binary-or of itself plus the right neighbor
In all cases,
Convert the result back to ASCII and return it
If this would result in a code point 127 or greater to be converted, then
Instead return a space
Join the results of the For loop back into one string and output it
Beispielsweise ist für die Eingabe Hello
die Ausgabe emmol
da
- Der
H
dreht sich um\0 | 'e'
was zue
- Das
e
dreht sich um'e' | 'l'
, oder101 | 108
, was ist109
oderm
- Der erste
l
wendet sich auch an101 | 108
oderm
- Die Sekunde
l
dreht sich um108 | 111
, welche111
oder isto
- Der
o
wendet sich an108 | \0
, oderl
Eingang
- Ein Satz, der ausschließlich aus druckbaren ASCII-Zeichen in einem geeigneten Format besteht .
- Der Satz kann Punkte, Leerzeichen und andere Satzzeichen enthalten, besteht jedoch immer nur aus einer Zeile.
- Der Satz besteht aus mindestens drei Zeichen.
Ausgabe
- Die resultierende Chiffre, die auf den oben beschriebenen Regeln basiert, wird als Zeichenfolge oder Ausgabe zurückgegeben.
Die Regeln
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig.
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Beispiele
Eingabe in einer Zeile, Ausgabe in der folgenden Zeile. Leerzeilen trennen Beispiele.
Hello
emmol
Hello, World!
emmol, ww~ved
PPCG
PSWG
Programming Puzzles and Code Golf
r wogsmmoonpuu ~ meannncoooeggonl
abcdefghijklmnopqrstuvwxyz
bcfefgnijknmno~qrsvuvw~yzz
!abcdefghijklmnopqrstuvwxyz
aaccgeggoikkomoo qsswuww yy
Test 123 with odd characters. R@*SKA0z8d862
euutu133www|todddchizsscguwssr`jS{SK{z~|v66
o
Änderungen l
im ersten Beispiel bin ich mir ziemlich sicher, dass Ihre Spezifikationen sicherstellen, dass sich im zweiten Beispiel die erste o
nicht ändert l
. Es sollte sich ändern zu 'l' | ','
, was auch immer das ist, oder?
'l' | ','
, was ist 108 | 44 --> 1101111 | 0101100
, was wird 108
, was ist l
. Das ,
stimmt mit dem l
überein, es ändert sich also nichts, wenn das Binary-or stattfindet.