Matheus Gonçalves 10 anos atrás
Eu sempre gostei muito das minhas aulas de algoritmos e compiladores na faculdade. Gostava mais ainda das maratonas de programação, nas quais a gente passava madrugadas tentando criar soluções para problemas elaborados pelos mestres, que tinham como passa-tempo encher nossa cabeça de lógica e cabelos brancos. Mas era divertido. Seria mais, se algum dos exercícios envolvesse o uso de elementos gráficos, como os que existem em jogos de videogame.
E foi exatamente isso que fez Michael Birken, no projeto que chamou de Tetris Printer Algorithm. O programador concebeu um método para fazer com que um computador desenhasse arbitrariamente imagens de 8 bits, alocando estrategicamente os blocos de várias cores para delinear exatamente a imagem desejada.
Pelo que eu vi do código fonte e dos detalhes do algorítimo, trata-se de um software complexo, mas compreensível para quem tem alguns anos de estrada na área de desenvolvimento de software, principalmente para quem trabalha com Java.
Explicando de forma mais técnica: O procedimento converte os pixels de uma imagem em “pedaços” dos blocos de Tetris (da versão do Nintendinho), linha por linha, de baixo pra cima. Para gerar um quadrado individual, o algoritmo monta uma estrutura que consiste de uma região retangular plenamente acoplável, fazendo uso de padrões, “traduzindo” os chamados Tetriminos em blocos de caracteres. Com uma função que computa o coeficiente binomial, cada sprite desejado (que deve ter, no máximo, 17x32 pixels) passa então a ser uma sequência de “letras” a serem exibidas. Cada novo bloco é lido em tempo real, e o sistema se encarrega de deixar apenas o pixel necessário ser encaixado, eliminando linhas e linhas para que estes caracteres sejam mantidos.
Pode parecer complicado de entender assim, mas o vídeo abaixo fala por si só:
"Are you a Tetris Master? The printer decides."
Ou seja: Ao girar, posicionando as peças em uma seqüência predeterminada, o algoritmo explora a mecânica de Tetris para gerar imagens bitmap, como os personagens de games da Nintendo.
Algumas pessoas podem achar bobo ou desnecessário perder tempo em um projeto assim, mas é em maratonas como essa que surgem as melhores idéias, acredite.
Fonte: BoingBoing.