Мы определим нечетный / четный шифр ASCII через следующий псевдокод:
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
Например, для ввода Hello
, вывод emmol
, так как
- В
H
очереди к\0 | 'e'
которой являетсяe
e
Поворачивается'e' | 'l'
, или101 | 108
, что109
илиm
- Первый
l
также превращается в101 | 108
илиm
- Второй
l
превращается в108 | 111
, который является111
илиo
o
Поворачивается108 | \0
, илиl
вход
- Предложение, состоящее исключительно из печатных символов ASCII, в любом подходящем формате .
- В предложении могут быть точки, пробелы и другие знаки пунктуации, но всегда будет только одна строка.
- Предложение будет содержать не менее трех символов.
Выход
- Полученный шифр, основанный на правилах, описанных выше, возвращается как строка или вывод.
Правила
- Либо полная программа или функция приемлемы.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Примеры
Ввод в одну строку, вывод в следующую. Пустые строки отдельные примеры.
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
изменения l
в первом примере, я уверен, что ваши спецификации гарантируют, что первый o
не изменится l
во втором примере. Это должно измениться 'l' | ','
, что бы это ни было, верно?
'l' | ','
, который есть 108 | 44 --> 1101111 | 0101100
, который становится 108
, который есть l
. ,
Происходит выстраиваться с l
, так что нет никаких изменений при двоичном или происходит.