Fondamentalmente, la stringa è un run-length encoding dell'immagine: caratteri alternati nella stringa indicano quante volte è possibile disegnare uno spazio e quante volte è necessario disegnare un punto esclamativo consecutivo. Ecco un'analisi dei vari elementi di questo programma:
La stringa codificata
I primi 31 caratteri di questa stringa vengono ignorati. Il resto contiene istruzioni per disegnare l'immagine. I singoli caratteri determinano quanti spazi o punti esclamativi disegnare consecutivamente.
esterno per il ciclo
Questo ciclo va oltre i caratteri della stringa. Ogni iterazione aumenta il valore di b
di uno e assegna il successivo carattere nella stringa a a
.
interno per ciclo
Questo ciclo patte singoli caratteri, e una nuova riga quando raggiunge la fine della linea. Il numero di caratteri estratti è a - 64
. Il valore di c
passa da 10 a 90 e si reimposta su 10 quando viene raggiunta la fine della riga.
Il putchar
Questo può essere riscritto come:
++c;
if (c==90) { //'Z' == 90
c = 10; //Note: 10 == '\n'
putchar('\n');
}
else {
if (b % 2 == 0)
putchar('!');
else
putchar(' ');
}
Essa trae il carattere appropriato, a seconda che b
è pari o dispari, o un ritorno a capo quando necessario.
screenshot dell'output? –
È semplicemente offuscato C ... ci sono intere società dedicate a questo tipo di follia. – Mark
Uscita: http: // codepad.org/ngiITeZ4 –