Arvorezinha - Brainfuck
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”
e gajas????
ja criavas o padrao de arvorezinha no google code ou assim
<pre>
+++++++[>++++++<-]++++++++++
>.<.>..<.>...<.>....<.>.....
</pre>
++++++++[>+++++++++++. mostra Q
+++++++++.
----------. a
+++++++++++. l
----------------. espaco
++++++++++++++++. o
-------------------. outro espaço
++++++++++. p
++.r
---------.i
++++.m
--------.e
++++.i
+++++++++.r
---.o
-------------------. espaco
++++++++++++++++++.n
+++++++.u
--------.m
----------++++. ?
>++++++++++. newline
>
ler o 1º,>++++++[-]
ler o 2º,[-]<.