在Brainfuck中多次打印文本

时间:2015-08-19 15:40:30

标签: loops brainfuck

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

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

2 个答案:

答案 0 :(得分:6)

让我们想出一个5个字符长的单词,比如&#34;你好&#34;。

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

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

让我解释一下代码:

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

,>,>,>,>,

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

>+++

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

[<<<<< //goes back

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

>-]  //decrement

如果您有了这个想法,那么您可以通过以下方式轻松改进代码:在其中添加更多循环,我只是想向您展示一个简单的想法。

答案 1 :(得分:4)

更一般的答案如下。

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

+++++ >

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

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

现在,数组看起来像&lt; counter,0,string&gt; 。最后,我们将指针放在计数器

<[<]<

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

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