Liên kết này nên được khá hữu ích: http://esolangs.org/wiki/brainfuck_algorithms
Nó chứa các thuật toán cho phép nhân và cũng là một điều kiện IF cũng như so sánh boolean (để kiểm tra nếu, ví dụ, người dùng nhấn vào [nhân vật 10] để kết thúc đầu vào.)
Sau đó, những gì bạn làm là (tôi sẽ viết một số mã giả và sau đó bạn có thể thực hiện nó bằng cách sử dụng các thuật toán được mô tả ở đó). Tôi sẽ nói với bạn cũng cung cấp cho mã giả trên làm thế nào để thực hiện một vòng lặp while ở cuối kể từ đó không được bao gồm trong trang đó (nhưng khá đơn giản dù sao ... tương đối). Bạn chắc chắn sẽ ngạc nhiên khi bạn quản lý để hiểu chính xác những gì mỗi nhân vật đang làm: D. Dù sao, ở đây đi:
bạn cần hai tế bào A và B
move to B
input a character
while B is not equal to 10 (the newline character) then
subtract 48 from B ('0' is character 48, so if we subtract 48 from any digit entered we should get its value. Of course this assumes that the user only presses digit keys or enter. I'll leave it as an exercise to you to do error checking)
multiply A by 10
add B to A (you can just move B to A like this [<+>-] since you will not need B's value anymore)
move to B
input a character
Và đây là một chút thông tin về làm thế nào để tạo ra một vòng lặp while. Giả sử bạn có mã này: while (condition) {body}
. Tôi sẽ giả sử bạn quản lý để thực hiện mã cho điều kiện bằng cách sử dụng liên kết tôi đã cung cấp cho bạn trước đó. Bạn cần một tế bào trong đó để lưu trữ các kết quả của điều kiện, mà tôi sẽ gọi C
execute condition and store result in C
start loop using [[-] (start the loop and immediately clear C)
execute loop body
execute condition and store result in C
end loop using ]
Nguồn
2012-11-27 12:09:50
Khi tôi thử nghiệm trực tuyến này tại https://copy.sh/brainfuck/ và tại https://sange.fi/esoteric/brainfuck/impl/interp/i.html, cả hai trang web đều không thể dừng lại. – JSideris