2015-08-19 9 views
5

Brainfuck'ta bu merhaba dünya programını denedim. Metni birden çok kez nasıl yazdırabilirim?Brainfuck'ta birden çok kez metin yazdırma

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

cevap

5

yönettiği "Merhaba" gibi bir 5 karakter uzunluğunda kelimenin düşünelim: İşte benim kod.

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

beni kodu açıklayalım:: Eğer böyle bir kod olabilir o 5 karakterleri 3 kez yazdırmak istiyorsanız

Yani

kodunun ilk bölümü girişidir bölüm:

,>,>,>,>, 

Ardından, 3 kez yazdırmak istediğiniz bilgileri içeren bir değişkeni başlatırsınız.

>+++ 

Sonra geri başından gider bu 5 karakterleri yazdırır ve değişken gider ve onu azaltma döngü var.

[<<<<< //goes back 

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

>-] //decrement 

Fikriniz varsa, kodu kolayca yükseltebilirsiniz. Daha fazla ilmek koyarak, sadece size basit bir fikir göstermek istedim.

2

Daha genel bir cevap aşağıdaki gibidir.

en metin 5 kez yazdırmak istediğimizi varsayalım bir \ n dek

+++++ > 

ve sonra ithal karakterler (= 10) verilir (bu sayacı arayacağım).

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

dizi şimdi < sayaç, 0, dize> benziyor. Son olarak, işaretçiyi sayacına numaralı kontrole yerleştiriyoruz.

<[<]< 

Dizeyi birden çok kez yazdırarak bitiriyoruz.

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