3

我知道在 Brainfuck 中对大整数进行算术运算,虽然有时可能相当乏味,但完全有可能。

然而,我想知道的是,普遍接受的最佳实践是将大整数(甚至是字符串,我想)作为输入。

大多数编译器/解释器允许您一次提供完整的字符串作为输入(然后使用 单独读取每个字符,)。但我想知道的是——如果你不知道输入流何时停止,你怎么能读进去呢?我想一种方法是告诉用户将某个字符/字符串附加到他们的号码以表明它已经结束,但这似乎有点不方便用户。

我更喜欢一个考虑到可移植性的答案(特定于实现的解决方案很有趣,但不是这个问题的主要焦点)。如果没有完全与实现无关的方法来做到这一点,那么可以在大多数实现上工作并且优雅地失败的方法将是下一个最好的方法。

提前致谢。

4

2 回答 2

2

大多数语言都允许您从输入中读取一行(例如 C 中的 gets()、C# 中的 ReadLine() 等)。为什么不要求用户将每个值作为一行输入(即用回车分隔)?

于 2010-06-24T20:13:43.103 回答
0

实际上,我出于不同的目的为不同的问题发布了相同的代码。除非遇到换行符,否则以下代码将继续接受您键入的任何内容的 ASCII。然后打印您键入的内容。

不用担心便携性;我已经使用这种读取数字的策略实现了两个 n 位数字的加法,你可以在这里找到。

> +
[ - >,>+< 
  ----- -----    ; minus 10
  [              ; if enters means it is not a \n
    +++++ +++++  ; restore prev value
    < 
  ] >>           ; moving forward
]
                 ; numbers are 0 0 49 0 50 0 51
                 ; for input 123
<<<<[<<]         ; moving to the beginning
>>               ; reaching first char
[.>>]            ; just printing till end
于 2013-10-18T16:12:10.153 回答