Mais um blog inútil.

Abril 7, 2009

Arvorezinha - Brainfuck

Arquivado em: arvorezinha — falso @ 23:29

Ola de novo!

Hoje fui desafiado a fazer a arvorezinha em brainfuck. Portanto aqui vai:

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

Agora por blocos para gente normal entender:

Começa se no registo 0
++++ Define r0 a 4
[ - enquanto o registo actual não for 0, entra no ciclo

++++++++++ anda para o registo 1 e soma-lhe 10
< volta para o registo anterior r0, e retira-lhe 1
] repete ate r0 = 0
++ vai-se para o r1 e soma se 2 - e está o valor 42 (asterisco em ascii) no r1
. manda imprimir

+++++++++++++ Move-se para o registo 3 e incrementa-se 13 nele (newline)
. manda imprimir

E com isto já temos “*\n” feito… Continuando
< <++ voltamos a r0 e incrementamos 2, r0 = 2
[ se r0 != 0 entro

.< - move-se para o r1 e imprime *, volta para o r0 e decrementa
]». repete ate r0 igual a 0, e a seguir manda anda duas posicoes para a direita, vai parar a r3 e imprime uma newline.

Depois o resto é so repeticao

< <+++[>.< -]». tres asteriscos e um newline
< <++++[>.< -]». quatro asteriscos e um newline
< <+++++[>.< -]». cinco asteriscos e um newline

Eu acho que isto é uma maneira meio lame de fazer, porque os prints estão pré definidos. Tentei fazer o mesmo algoritmo que o do assembly, mas falhei miseravelmente. Ofereço um queijo a quem conseguir. Aproveita agora esta oportunidade de te tornares um homem de barba rija!!!

Podem testar o codigo neste Javascript Brainfuck Interpreter / Debugger online ou usar o magnifico Brainfuck developer.

8 comentários a “Arvorezinha - Brainfuck”

  • [...] Ora viva amigos! Para quem duvidou, aqui está a arvorezinha em Malbolge (provavelmente a linguagem de programação mais difícil de todos os tempos), versão lame, sem ciclos, só prints. Como a versão em brainfuck. [...]
  • fuck
    lolol
    e gajas????
  • luminoso
    epic win
    ja criavas o padrao de arvorezinha no google code ou assim
  • Dcoder
    Toma la uma versão 58% mais 'eficiente':

    <pre>
    +++++++[&gt;++++++&lt;-]++++++++++
    &gt;.&lt;.&gt;..&lt;.&gt;...&lt;.&gt;....&lt;.&gt;.....
    </pre>
  • Pedro
    porra! e eu k só acreditava depois de ver... 8|
  • tatts
    tesão!
  • plastik
    AMO-TE!
  • Pedro
    só mesmo pa malucos: "calculadora" em bf (algoritmo da adição made in wikipedia... -.-)
    ++++++++[&gt;+++++++++++. mostra Q
    +++++++++.
    ----------. a
    +++++++++++. l
    ----------------. espaco
    ++++++++++++++++. o
    -------------------. outro espaço
    ++++++++++. p
    ++.r
    ---------.i
    ++++.m
    --------.e
    ++++.i
    +++++++++.r
    ---.o
    -------------------. espaco
    ++++++++++++++++++.n
    +++++++.u
    --------.m
    ----------++++. ?
    &gt;++++++++++. newline



    &gt;
    ler o 1º,&gt;++++++[-]
    ler o 2º,[-]&lt;.