19

しばらく検索しましたが、助けになるものが見つかりませんでした。

最初のセル(または値など)が165に等しいとしましょう。「165」を印刷するにはどうすればよいですか?

私の考えは、数字を1、6、5の別々の部分にカットすることでした。それらを印刷しても問題はありません。

注:「165」を印刷したいだけではありません。最初のセルの値を出力したいと思います。165、255、0、1、その他のいずれであっても関係ありません。

4

2 に答える 2

16

有名なモジュロ手順を使用します(http://esolangs.org/wiki/brainfuck_algorithmsが役立ちます)

>+++++++++++[-<+++++++++++++++>] # initialize 165 at first cell
>++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>[-]>>>++++++++++<[->-[>+>>]>[+[-
<+>]>+>>]<<<<<]>[-]>>[>++++++[-<++++++++>]<.<<+>+>[-]]<[<[->-<]++++++[->++++++++
<]>.[-]]<<++++++[-<++++++++>]<.[-]<<[-<+>]
于 2012-12-19T06:15:28.173 に答える
15

私はここで見つけることができる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"

そして、これがそのために生成されたコードです:

>>>>>>>>>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++[<+>-]<[>>+>+<<<-]>>>[<<<+>>>-]<[[-]<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-
]++++++++++<[>>+>+<<<-]>>>[<<<+>>>-]<[>+<-]>[<<[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<[>+
<<-[>>[-]>+<<<-]>>>[<<<+>>>-]<[<-[<<->>[-]]+>-]<-]<<+>]<[>>+<<-]>>[<<<[>+>+<<-]>
>[<<+>>-]>-]<<[<<->>-]<[-]<[>>>>>>>>+<<<<<<<<-]>>>>>>>>>[>>]+[<<]>[>[>>]<+<[<<]>
-]<<<<<<<<<<[>>+>+<<<-]>>>[<<<+>>>-]+[<+>-]<<<[-]>>[<<+>>-]<<<[>>>+>+<<<<-]>>>>[
<<<<+>>>>-]++++++++++<[>>+<<-]>>[<[>>+>+<<<-]>>>[<<<+>>>-]<[>+<<-[>>[-]>+<<<-]>>
>[<<<+>>>-]<[<-[<<<->>>[-]]+>-]<-]<<<+>>]<[-]<<<<[-]>>>[<<<+>>>-]<<<[>>>+>+<<<<-
]>>>>[<<<<+>>>>-]<[<+>-]<]<[>+>+<<-]>>[<<+>>-]<[>+<[-]]+>[<[-]<[>>>+>+<<<<-]>>>>
[<<<<+>>>>-]<[[-]>>>>>>>>[>>]<[<[<<]<<<<<+>>>>>>>[>>]<-]<-<<[<<]<<<<<>++++++++++
++++++++++++++++++++++++++++++++++++++[<+>-]<.[-]<<<<[>>>>+>+<<<<<-]>>>>>[<<<<<+
>>>>>-]+[<->-]<<<<<[-]>>>>[<<<<+>>>>-]<<<<[>>>>+>+<<<<<-]>>>>>[<<<<<+>>>>>-]<[<+
>-]<]<[-]]<[>>++++++[<++++++++>-]<.[-]<[-]]<[-]<[-]>>>>>>>>>>>>[>[-]>]<<[-<<]<<<
<<<<<<<<<<<<<<[-]<[-]
于 2012-11-27T11:49:45.987 に答える