受到以下XKCD漫画的启发:
在艾略特小姐的《 Work It》中,部分合唱内容如下:
Is it worth it, let me work it
I put my thing down, flip it and reverse it
考虑到这一点,我提出以下高尔夫挑战代码:
创建按以下顺序执行的代码:
- 从STDIN接受8位ASCII输入;例如
n
(十六进制6E或Bin 01101110) - 将每个字节的8位向下移位1位(我相信这被称为逐位向下移位),例如
01101110
变为00110111
(“放下我的东西”); - 反转每个字节的位,例如
00110111
变为11001000
(“翻转”); - 反转每个字节的位,例如
11001000
变为00010011
(“ reverse it”); - 如果字节的值小于32,则在转换回ASCII之前对该字节执行
(95 + [byte value])
,换句话说,(126-(31-[byte value]))
对字节执行...如果字节的值仍小于32,则重复步骤5 - 如果字节的值大于126,则在转换回ASCII之前对该字节执行
([byte value] - 95)
,换句话说,(32+([byte value]-127))
对字节执行...如果该值仍大于126,则重复步骤6。 - 将新转换的字符串显示为ASCII。
此代码的一个实际示例:
(输入,值得吗?)
workit missy
(“ missit”为输入,“ workit”为功能)
现在在幕后...
(让我来工作...转换成二进制)
01101101 01101001 01110011 01110011 01111001
(把我的东西放下……按位)
00110110 00110100 00111001 00111001 00111100
(...翻转...)
11001001 11001011 11000110 11000110 11000011
(...并扭转它!)
10010011 11010011 01100011 01100011 11000011
(转换回十进制)
147 211 99 99 195
(执行必要的数学运算)
147-95 211-95 99 99 195-95 => 52 116 99 99 100
(转换回ASCII并显示,输出)
4tccd
规则
- 最短的代码胜出...就这么简单...
- 输入可以通过函数,提示符或任何适合您的方法来进行,只要您可以使规则1“为您工作”即可;;)
- 我并不追求可逆性,只要您可以使代码按我要求的去做,我就会很高兴...
祝你好运!
0 1 1 0 1 1 0 1
和0 1 1 0 1 0 0 1
为mi
P
将其转换为字节值,235
然后减去95
则为140
。仍然无法打印。还是我误会了?