我搜索了一段時間,但我找不到任何可以幫助我的東西。在brainfuck中打印一個數字?
假設第一個單元格(或值等)等於165.我如何打印「165」?
我的想法是將數字分成單獨的部分:1,6和5.打印它們不是問題。
注:我不只是想打印「165」。我想打印第一個單元格的值。不管它是165,255,0,1還是其他。
我搜索了一段時間,但我找不到任何可以幫助我的東西。在brainfuck中打印一個數字?
假設第一個單元格(或值等)等於165.我如何打印「165」?
我的想法是將數字分成單獨的部分:1,6和5.打印它們不是問題。
注:我不只是想打印「165」。我想打印第一個單元格的值。不管它是165,255,0,1還是其他。
使用著名模過程(http://esolangs.org/wiki/brainfuck_algorithms將幫助你)
>+++++++++++[-<+++++++++++++++>] # initialize 165 at first cell
>++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>[-]>>>++++++++++<[->-[>+>>]>[+[-
<+>]>+>>]<<<<<]>[-]>>[>++++++[-<++++++++>]<.<<+>+>[-]]<[<[->-<]++++++[->++++++++
<]>.[-]]<<++++++[-<++++++++>]<.[-]<<[-<+>]
我已經創建了一個簡單的語言,編譯爲brainfuck,可以在這裏找到:http://code.google.com/p/brainfuck-compiler。在java中實現的語言有一個編譯器。
我在該語言中使用以下函數來輸出一個數字。也許你可以分析生成的代碼,看看是否有任何東西可以用於你。儘管有一個警告詞,它確實會在單元格周圍產生一些冗餘的複製(從未嘗試優化過)。無論如何,這裏有一個示例程序和它生成的BF代碼。 (注意,缺口必須是在我的語言標籤)
declare n, 165
declare digits
while n
push n % 10
digits = digits + 1
n = n/10
if digits
while digits
out pop + 48
digits = digits - 1
else
outs "0"
這裏是所生成的代碼:
>>>>>>>>>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++[<+>-]<[>>+>+<<<-]>>>[<<<+>>>-]<[[-]<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-
]++++++++++<[>>+>+<<<-]>>>[<<<+>>>-]<[>+<-]>[<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[>+
<<-[>>[-]>+<<<-]>>>[<<<+>>>-]<[<-[<<->>[-]]+>-]<-]<<+>]<[>>+<<-]>>[<<<[>+>+<<-]>
>[<<+>>-]>-]<<[<<->>-]<[-]<[>>>>>>>>+<<<<<<<<-]>>>>>>>>>[>>]+[<<]>[>[>>]<+<[<<]>
-]<<<<<<<<<<[>>+>+<<<-]>>>[<<<+>>>-]+[<+>-]<<<[-]>>[<<+>>-]<<<[>>>+>+<<<<-]>>>>[
<<<<+>>>>-]++++++++++<[>>+<<-]>>[<[>>+>+<<<-]>>>[<<<+>>>-]<[>+<<-[>>[-]>+<<<-]>>
>[<<<+>>>-]<[<-[<<<->>>[-]]+>-]<-]<<<+>>]<[-]<<<<[-]>>>[<<<+>>>-]<<<[>>>+>+<<<<-
]>>>>[<<<<+>>>>-]<[<+>-]<]<[>+>+<<-]>>[<<+>>-]<[>+<[-]]+>[<[-]<[>>>+>+<<<<-]>>>>
[<<<<+>>>>-]<[[-]>>>>>>>>[>>]<[<[<<]<<<<<+>>>>>>>[>>]<-]<-<<[<<]<<<<<>++++++++++
++++++++++++++++++++++++++++++++++++++[<+>-]<.[-]<<<<[>>>>+>+<<<<<-]>>>>>[<<<<<+
>>>>>-]+[<->-]<<<<<[-]>>>>[<<<<+>>>>-]<<<<[>>>>+>+<<<<<-]>>>>>[<<<<<+>>>>>-]<[<+
>-]<]<[-]]<[>>++++++[<++++++++>-]<.[-]<[-]]<[-]<[-]>>>>>>>>>>>>[>[-]>]<<[-<<]<<<
<<<<<<<<<<<<<<[-]<[-]
這只是可怕的慢... –
+1的鏈接。但是這個功能只適用於3位數字。 –
有[代碼適用於同一頁面上的所有單元格大小](http://esolangs.org/wiki/brainfuck_algorithms#Print_value_of_cell_x_as_number_for_ANY_sized_cell_.28ie_8bit.2C_16bit.2C_etc.29)。 – amoebe