2015-08-19 13 views
5

Tôi đã thử chương trình hello world này ở Brainfuck. Làm thế nào tôi có thể in văn bản nhiều lần? Đây là mã của tôi:In văn bản nhiều lần trong Brainfuck

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

Trả lời

5

Hãy nghĩ một từ dài 5 ký tự như "hello".

Vì vậy, nếu bạn muốn nó in những 5 ký tự 3 lần bạn có thể có một mã như thế này:

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

Hãy để tôi giải thích mã:

Phần đầu tiên của mã là đầu vào một phần:

,>,>,>,>, 

Sau đó, bạn khởi tạo biến chứa thông tin bạn muốn in 3 lần.

>+++ 

Sau đó, bạn có vòng lặp bắt đầu lại, in ra 5 ký tự đó và chuyển đến biến và giảm giá trị đó.

[<<<<< //goes back 

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

>-] //decrement 

Nếu bạn có ý tưởng, bạn có thể dễ dàng cải thiện mã bằng ví dụ: đặt nhiều vòng trong đó, tôi chỉ muốn cho bạn thấy một ý tưởng đơn giản.

2

Câu trả lời chung hơn như sau.

Hãy nói rằng bạn muốn in văn bản 5 lần (chúng tôi sẽ gọi đây là truy cập)

+++++ > 

và sau đó nhân vật nhập khẩu cho đến khi một \ n (= 10) được đưa ra.

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

Mảng bây giờ trông như < truy cập, 0, string>. Cuối cùng, chúng tôi đặt con trỏ tại số truy cập.

<[<]< 

Chúng tôi hoàn thành bằng cách in chuỗi nhiều lần.

[  while (counter) { 
>>[.>] print string 
<[<]<- counter-- 
]  } 
Các vấn đề liên quan