Definiremos o ASCII Odd / Even Cipher através do pseudocódigo abaixo:
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 exemplo, para entrada Hello
, a saída é emmol
, desde
- As
H
voltas para as\0 | 'e'
quais ée
- As
e
voltas para'e' | 'l'
, ou101 | 108
, que é109
oum
- O primeiro
l
também se volta para101 | 108
oum
- A segunda
l
volta para108 | 111
, que é111
ouo
- As
o
voltas para108 | \0
, oul
Entrada
- Uma frase composta apenas por caracteres ASCII imprimíveis, em qualquer formato adequado .
- A sentença pode ter períodos, espaços e outras pontuações, mas sempre terá apenas uma linha.
- A frase terá pelo menos três caracteres.
Resultado
- A cifra resultante, com base nas regras descritas acima, retornou como uma sequência ou saída.
As regras
- Um programa completo ou uma função são aceitáveis.
- Lacunas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
Exemplos
Entrada em uma linha, saída na seguinte. Linhas em branco separam exemplos.
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
alterações l
no primeiro exemplo, tenho certeza de que suas especificações garantem que o primeiro o
não seja alterado l
no segundo exemplo. Deve mudar para 'l' | ','
, seja o que for, certo?
'l' | ','
que é 108 | 44 --> 1101111 | 0101100
, o que se torna 108
, o que é l
. O ,
alinhamento acontece com o l
, portanto, não há alterações quando o binário - ou ocorre.