8

我在 Brainfuck 中试用了这个 hello world 程序。如何多次打印文本?这是我的代码:

+++++++[>++++++++++ <- ] >++.>++++++[>++++++++++ <- ] >+++++++++.>+++++++[>++++++++++ <- ] >++++++..>+++++++[>++++++++++ <- ] >+++++++++.>+++[>++++++++++ <-]>++. >++++++++[>++++++++++<-]>+++++++.>+++++++[>++++++++++<-] >+++++++++.>++++++++[>++++++++++ <-]>++.>+++++++[>++++++++++ <- ] >++++++.>++++++[>++++++++++ <-]>++++++++.>+++[>++++++++++<-]>++.>+++[>++++++++++<-]>+++.>+++[>++++++++++<-]>+++.
4

2 回答 2

7

让我们想象一个 5 字符长的单词,比如“hello”。

因此,如果您希望它打印这 5 个字符 3 次,您可以使用如下代码:

,>,>,>,>,>+++[<<<<<.>.>.>.>.>-]

让我解释一下代码:

代码的第一部分是输入部分:

,>,>,>,>,

然后初始化一个变量,其中包含要打印 3 次的信息。

>+++

然后你有一个回到开始的循环,打印出这 5 个字符,然后转到变量并递减它。

[<<<<< //goes back

.>.>.>.>. //print out

>-]  //decrement

如果你有这个想法,那么你可以很容易地改进代码,例如在其中添加更多循环,我只是想向你展示一个简单的想法。

于 2015-08-20T11:49:01.520 回答
4

更一般的答案如下。

假设您要打印文本 5 次(我们称之为counter

+++++ >

然后导入字符,直到给出 \n (= 10)。

----- -----[+++++ +++++ >, ----- -----]

数组现在看起来像<counter, 0, string >。最后,我们将指针放在counter处。

<[<]<

我们通过多次打印字符串来完成。

[       while (counter) {
>>[.>]    print string
<[<]<-    counter--
]       }
于 2015-08-31T14:35:15.397 回答