qua*_*ote 18 dos2unix carriage-return brainfuck
我在SuperUser.com上讨论了无用的答案,并发现自己挑战另一张海报来回答brainfuck中的问题.他并没有接受我,但现在我很好奇.
所有程序需要做的是将CRLF行结尾转换为LF(dos-style到unix).周围的任何bf编码器可以帮忙吗?
Ala*_*ger 25
这个相当短,只有41个字符.
,[[->+>+<<]>-------------[>.<[-]]>[-]<<,]
Run Code Online (Sandbox Code Playgroud)
它将值读入[0].它将读取的值复制到[1]和[2]中,并从[1]中减去13.如果[1]非零(意味着它不是CR),它会输出[2]并清除[1].然后它清除[2]并再次读入[0]并重复.
这有一个额外的好处 - 因为它每次读取都会留下[0] = 0 - 它应该支持读取EOF为0的BF虚拟机或将EOF视为"无变化",这两者都很常见.
由于这不会用LF替换CRLF对,而只是用CR表示,这不取决于假设文件以LF结尾.我自己用dos2unix测试(至少是Cygwin测试)并不表示保留了单独的CR.
Jaa*_*koK 24
干得好:
,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++.
Run Code Online (Sandbox Code Playgroud)
假设EOF由输入值0表示(这是我以前测试的牛肉的默认值,并且是一个合理的选择;我认为它也可能支持EOF使角色保持不变,但我没有测试).还假设文件以LF结尾(实际上,它用LF替换最后一个字符).如果不是CRLF对的一部分(即,它输出单独的CR),则正确处理CR.
花了一个小时写作和测试,这包括从一开始就学习Brainfuck.