Básicamente, la cadena es run-length encoding de la imagen: los caracteres alternos en la cadena indican cuántas veces se debe dibujar un espacio y cuántas veces se debe dibujar un signo de admiración consecutivamente. He aquí un análisis de los diferentes elementos de este programa:
La cadena codificada
se ignoran los primeros 31 caracteres de esta cadena. El resto contiene instrucciones para dibujar la imagen. Los personajes individuales determinan cuántos espacios o signos de exclamación dibujarán consecutivamente.
exterior de bucle
Este bucle pasa a través de los caracteres de la cadena. Cada iteración aumenta el valor de b
en uno, y asigna el siguiente carácter de la cadena al a
.
interior para bucle
Este bucle empates caracteres individuales, y una nueva línea cada vez que se llega al final de la línea. La cantidad de caracteres dibujados es a - 64
. El valor de c
va de 10 a 90 y se restablece a 10 cuando se alcanza el final de la línea.
El putchar
Esto puede reescribirse como:
++c;
if (c==90) { //'Z' == 90
c = 10; //Note: 10 == '\n'
putchar('\n');
}
else {
if (b % 2 == 0)
putchar('!');
else
putchar(' ');
}
Se dibuja el carácter apropiado, dependiendo de si b
es par o impar o un salto de línea cuando sea necesario.
¿captura de pantalla de la salida? –
Es solo ofuscado C ... hay sociedades enteras dedicadas a este tipo de locura. – Mark
Salida: http: // codepad.org/ngiITeZ4 –