2015-08-19 26 views
5

Wypróbowałem ten program cześć świata w Brainfuck. Jak mogę wydrukować tekst wiele razy? Oto mój kod:Drukowanie tekstu wiele razy w Brainfuck

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

Odpowiedz

5

Pomyślmy o 5 znaków długie słowo jak „cześć”.

Więc jeśli chcesz go wydrukować te 5 znaków 3 razy można mieć kod jak poniżej:

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

Pozwól mi wyjaśnić kod:

Pierwsza część kodu jest wejście część:

,>,>,>,>, 

Następnie należy zainicjować zmienną zawierającą informacje, które mają zostać wydrukowane 3 razy.

>+++ 

Następnie masz pętlę, która powraca do początku, wypisuje te 5 znaków i przechodzi do zmiennej i ją zmniejsza.

[<<<<< //goes back 

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

>-] //decrement 

Jeśli masz pomysł, możesz łatwo poprawić kod przez np. umieszczając w nim więcej pętli, chciałem pokazać prosty pomysł.

2

Bardziej ogólna odpowiedź jest następująca.

Powiedzmy chcesz wydrukować tekst 5 razy (nazwijmy to licznik)

+++++ > 

a następnie znaki przywóz do \ n (= 10) jest podane.

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

Tablica teraz wygląda < licznika, 0, ciąg>. Na koniec umieszczamy wskaźnik pod adresem licznik.

<[<]< 

Kończymy przez wielokrotne drukowanie ciągu znaków.

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