我进入了一个关于无用答案的argument over on SuperUser.com,发现自己在挑战另一个帖子,让他们用脑筋急转弯的方式回答这个问题。他没有接受我,但现在我很好奇。
所有的程序需要做的就是将CRLF行尾转换为LF (dos样式到unix)。周围有什么bf程序员可以帮上忙吗?
发布于 2009-10-07 21:28:14
这就是了:
,[[->+>+<<]>>>,[<-------------[+++++++++++++.>>>]<[>>----------[>+++++++++++++.-------------]<++++++++++>]<<<<[-]>>>[-<<<+>>>]]<[-]<[-]<]++++++++++.假设EOF由输入值0表示(这是我用来测试的牛肉的默认值,这是一个合理的选择;我认为它也可能支持EOF保持字符不变,但我没有测试它)。还假设文件以LF结尾(实际上,它将最后一个字符替换为LF)。如果不是CRLF对的一部分,则正确处理CR (即,它输出单独的CR)。
可能花了一个小时来编写和测试,这包括从一开始就学习Brainfuck。
发布于 2009-10-08 23:42:32
这太短了,只有41个字符。
,[[->+>+<<]>-------------[>.<[-]]>[-]<<,]它将一个值读入a中,并将读取的值复制到a1和a2中,然后从a1中减去13。如果a1为非零(意味着它不是CR),则将a2置入并清除a1。然后,它清除a2,并再次读取并重复。
这还有一个额外的优点,那就是--因为每次读取都会离开a=0 --它应该支持将EOF读为0或将EOF视为“无更改”的BF虚拟机,这两种情况都很常见。
由于这不会将CRLF对替换为LF,而只是剥离CR,这并不依赖于假设文件以LF结尾。我自己使用dos2unix (至少是Cygwin的)进行的测试并没有表明单独的CRs会被保留。
发布于 2015-08-01 22:48:57
略短和更简单的CR-stripper:
,[-------------[+++++++++++++.[-]],]https://stackoverflow.com/questions/1532266
复制相似问题