Uma rotina interessante…

… vinda diretamente do IOCCC:

#include <stdio.h>
#include <math.h>
#include <unistd.h>
#include <sys/ioctl.h>

             main() {
         short a[4];ioctl
      (0,TIOCGWINSZ,&a);int
    b,c,d=*a,e=a[1];float f,g,
  h,i=d/2+d%2+1,j=d/5-1,k=0,l=e/
 2,m=d/4,n=.01*e,o=0,p=.1;while (
printf("\x1b[H\x1B[?25l"),!usleep(
79383)){for (b=c=0;h=2*(m-c)/i,f=-
.3*(g=(l-b)/i)+.954*h,c<d;c+=(b=++
b%e)==0)printf("\x1B[%dm ",g*g>1-h
*h?c>d-j?b<d-c||d-c>e-b?40:100:b<j
||b>e-j?40:g*(g+.6)+.09+h*h<1?100:
 47:((int)(9-k+(.954*g+.3*h)/sqrt
  (1-f*f))+(int)(2+f*2))%2==0?107
    :101);k+=p,m+=o,o=m>d-2*j?
      -.04*d:o+.002*d;n=(l+=
         n)<i||l>e-i?p=-p
             ,-n:n;}}

Compile com:

$ gcc -ansi -o eastman eastman.c -lm

Aumente o tamanho do seu terminal (tela cheia é uma boa pedida) e divirta-se…

Eis um único “frame” da animação resultante…

PS: Ao tentar compilar os códigos do último ano tive problemas com os Makefiles. Sugiro que entenda como os autores querem que você compile seus códigos e o faça manualmente…

PS(2): Quero ver meu amigo MaRZ fazer isso naqueles “Montes de parenteses idiotas e estúpidos”… hehehe (just kidding!)

PS(3): Isso só vai funcionar se seu terminal suportar ANSI. No antigo DOS bastava colocar o driver ANSI.SYS no CONFIG.SYS… não sei como faz no Windows. O terminal do Linux suporta isso nativamente!

Anúncios

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s