Brainfuck por Wikipédia:
Brainfuck (também conhecido como brainf*ck, ou BF) é uma linguagem de programação esotérica notada pelo seu extremo minimalismo, criada por Urban Müller, em 1993. Ela é uma linguagem Turing completa, desenhada para desafiar e confundir os programadores, e não é útil para uso prático. Pela sua simplicidade, o desenvolvimento de compiladores e interpretadores para essa linguagem é muito mais fácil do que para outras linguagens.
Vamos brincar um pouco!
Para isso vamos utilizar esse interprete em C:
#include <stdio.h> #include <windows.h> int p, r, q; char a[5000], f[5000], b, o, *s=f; void interpret(char *c) { char *d; r++; while( *c ) { //if(strchr("<>+-,.[]\n",*c))printf("%c",*c); switch(o=1,*c++) { case '<': p--; break; case '>': p++; break; case '+': a[p]++; break; case '-': a[p]--; break; case '.': putchar(a[p]); fflush(stdout); break; case ',': a[p]=getchar();fflush(stdout); break; case '[': for( b=1,d=c; b && *c; c++ ) b+=*c=='[', b-=*c==']'; if(!b) { c[-1]=0; while( a[p] ) interpret(d); c[-1]=']'; break; } case ']': puts("UNBALANCED BRACKETS"), exit(0); case '#': if(q>2) printf("%2d %2d %2d %2d %2d %2d %2d %2d %2d %2d\n%*s\n", *a,a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],3*p+2,"^"); break; default: o=0; } if( p<0 || p>100) puts("RANGE ERROR"), exit(0); } r--; // chkabort(); } main(int argc,char *argv[]) { FILE *z; q=argc; if(z=fopen(argv[1],"r")) { while( (b=getc(z))>0 ) *s++=b; *s=0; interpret(f); } }
O Brainkfuck possui apenas 8 comandos de operação, outros diferentes dos demais são considerados comentarios
Um exemplo de um algoritmo(?) em Brainfuck:
hello.b
++++++++++[>++++++++>+++++++++++ >---------->+++>++++++++>+++++++ +++++>+++++++++++>++++++++++>+++ ++++++++>+++<<<<<<<<<<-]>-.>--.> ++++.>++.>---.>---.>.>.>+.>+++.,
Ela imprime no console um simples “Hello World!”
Interessante, não?! =)
Referências:
http://pt.wikipedia.org/wiki/Brainfuck
Ja havia lido sobre ela no wikipedia, mas nem dei muita bola. De fato essa linguagem não funciona para pessoas normais, é pior que assembly, e se o cara é fera em programar isso ai, deve já estar internado em algum hospício.
Mas sera que da pra fazer de tudo nela?
Ei, já que você gosta de desafios, podia falar sobre Hash birthday attack e outros collision attacks. Mais infos http://www.mscs.dal.ca/~selinger/md5collision/ e http://code.google.com/p/hashclash/ .. Isso ai é outra brainfuck da vida. a teoria é facil, mas aplicar isso em hash, o loko.. usar os hashclash é facil, agora o cara q fez isso…
Muito obrigado pelas infos, vou estuda-las e quem sabe, se eu conseguir entender o suficiente para fazer um post decente, posto aqui no blog.
Abraço!
1 mes sem update
É =/, infelizmente ando meio sem tempo, tendo que estudar outras coisa mas logo, logo vou fazer um post que estou preparando.
Abraço!
Essa linguagem é D+. Eu fiz um interpretador dela e agora eu estou codificando nessa linguagem. mt legal =)