在 Brainfuck 中多次打印文本

Print text multiple times in Brainfuck

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

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

让我们想象一个 5 个字符的长单词,例如 "hello"。

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

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

让我解释一下代码:

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

,>,>,>,>,

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

>+++

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

[<<<<< //goes back

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

>-]  //decrement

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

更一般的答案如下。

假设您想将文本打印 5 次(我们称之为 计数器

+++++ >

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

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

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

<[<]<

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

[       while (counter) {
>>[.>]    print string
<[<]<-    counter--
]       }