2015-08-19 2 views
5

Я пробовал эту программу мира привет в Brainfuck. Как напечатать текст несколько раз? Вот мой код:Печатать текст несколько раз в Brainfuck

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

ответ

5

Давайте думать о 5 символов длинного слова, как «привет».

Так что, если вы хотите, чтобы напечатать эти 5 символов 3 раза вы могли бы иметь такой код:

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

Позвольте мне объяснить код:

Первая часть кода является входным part:

,>,>,>,>, 

Затем вы инициализируете переменную, содержащую информацию, которую вы хотите распечатать 3 раза.

>+++ 

Тогда у вас есть цикл, который восходит к началу, печатает эти 5 символов, и идет к переменной и уменьшить его.

[<<<<< //goes back 

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

>-] //decrement 

Если у вас есть эта идея, вы можете легко улучшить код, например. добавив в него больше циклов, я просто хотел показать вам простую идею.

2

Более общий ответ следующий.

Допустим, вы хотите напечатать текст 5 раз (мы будем называть этот счетчик)

+++++ > 

и затем импортировать символы до а \ п (= 10) дается.

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

массив теперь выглядит < счетчика, 0, строка>. Наконец, мы поместим указатель на счетчик.

<[<]< 

Мы заканчиваем печать строки несколько раз.

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