Definiremos el cifrado impar / par ASCII a través del pseudocódigo siguiente:
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
Por ejemplo, para la entrada Hello
, la salida es emmol
, ya que
- Los
H
turnos a los\0 | 'e'
cuales ese
- Los
e
giros a'e' | 'l'
, o101 | 108
, que es109
om
- El primero
l
también se convierte en101 | 108
om
- El segundo se
l
convierte en108 | 111
, que es111
oo
- Los
o
turnos a108 | \0
, ol
Entrada
- Una oración compuesta únicamente de caracteres ASCII imprimibles, en cualquier formato adecuado .
- La oración puede tener puntos, espacios y otros signos de puntuación, pero solo será una línea.
- La oración tendrá al menos tres caracteres de longitud.
Salida
- El cifrado resultante, basado en las reglas descritas anteriormente, devuelto como una cadena o salida.
Las normas
- Un programa completo o una función son aceptables.
- Las lagunas estándar están prohibidas.
- Este es el código de golf, por lo que se aplican todas las reglas habituales de golf, y gana el código más corto (en bytes).
Ejemplos
Entrada en una línea, salida en lo siguiente. Las líneas en blanco separan ejemplos.
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
cambios l
en el primer ejemplo, estoy bastante seguro de que sus especificaciones aseguran que el primero o
no cambie l
en el segundo ejemplo. Debería cambiar a 'l' | ','
, sea lo que sea, ¿verdad?
'l' | ','
, que es 108 | 44 --> 1101111 | 0101100
, que se convierte 108
, que es l
. El ,
pasa a alinearse con el l
, así que no hay ningún cambio cuando el binario o se lleva a cabo.