2012-09-24 14 views
13

Szukałem przez chwilę, ale nie mogłem znaleźć niczego, co mogłoby mi pomóc.Drukowanie numeru w mózgu?

Załóżmy, że pierwsza komórka (lub wartość itp.) Wynosi 165. Jak wydrukować "165"?

Mój pomysł polegał na podzieleniu liczby na osobne części: 1,6 i 5. Nie byłoby problemu z ich wydrukowaniem.

Uwaga: nie chcę drukować tylko "165". Chcę wydrukować wartość pierwszej komórki. Nie ważne czy to 165, 255, 0, 1 czy cokolwiek innego.

Odpowiedz

12

użycie znanym procedura modulo (http://esolangs.org/wiki/brainfuck_algorithms pomoże)

>+++++++++++[-<+++++++++++++++>] # initialize 165 at first cell 
>++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>[-]>>>++++++++++<[->-[>+>>]>[+[- 
<+>]>+>>]<<<<<]>[-]>>[>++++++[-<++++++++>]<.<<+>+>[-]]<[<[->-<]++++++[->++++++++ 
<]>.[-]]<<++++++[-<++++++++>]<.[-]<<[-<+>] 
+0

+1 za link. Ale ta funkcja działa tylko dla liczb 3-cyfrowych. –

+0

Istnieje [kod, który działa dla wszystkich rozmiarów komórek na tej samej stronie] (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

7

Stworzyłem prosty język, który kompiluje do mózgu, który można znaleźć tutaj: http://code.google.com/p/brainfuck-compiler. Istnieje kompilator dla języka zaimplementowanego w Javie.

Używam następującej funkcji w tym języku do wyprowadzania numeru. Może przeanalizujesz wygenerowany kod i zobaczysz, czy cokolwiek może ci się przydać. Jedno słowo ostrzeżenia, ale generuje trochę zbędnego kopiowania wokół komórek (nigdy nie udało się tego zoptymalizować). W każdym razie oto przykładowy program i wygenerowany kod BF. (Zauważ, że wgniecenia MUSI być zakładki w moim języku)

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" 

A oto kod generowany dla że:

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

To tylko przerażająco powolne ... –