Về cơ bản, chuỗi là mã hóa hình ảnh có độ dài chạy : Các ký tự xen kẽ trong chuỗi cho biết cần vẽ bao nhiêu lần và bao nhiêu lần để vẽ dấu chấm than liên tiếp. Dưới đây là một phân tích về các yếu tố khác nhau của chương trình này:
Chuỗi được mã hóa
31 ký tự đầu tiên của chuỗi này được bỏ qua. Phần còn lại chứa các hướng dẫn để vẽ hình ảnh. Các ký tự riêng lẻ xác định có bao nhiêu dấu cách hoặc dấu chấm than để vẽ liên tiếp.
Vòng lặp ngoài
Vòng lặp này đi qua các ký tự trong chuỗi. Mỗi lần lặp làm tăng giá trị của b
một và gán ký tự tiếp theo trong chuỗi cho a
.
Vòng lặp bên trong
Vòng lặp này vẽ các ký tự riêng lẻ và một dòng mới bất cứ khi nào nó đến cuối dòng. Số lượng ký tự được vẽ là a - 64
. Giá trị của c
đi từ 10 đến 90 và đặt lại thành 10 khi đạt đến cuối dòng.
Các putchar
Điều này có thể được viết lại như:
++c;
if (c==90) { //'Z' == 90
c = 10; //Note: 10 == '\n'
putchar('\n');
}
else {
if (b % 2 == 0)
putchar('!');
else
putchar(' ');
}
Nó vẽ ký tự phù hợp, tùy thuộc vào việc b
chẵn hay lẻ, hoặc một dòng mới khi cần.