我们将通过以下伪代码定义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
例如,对于input 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
,所以有没有变化时,二进制或发生。