โดยพื้นฐานแล้วสตริงเป็นการเข้ารหัสความยาวของรูปภาพ: อักขระที่สลับกันในสตริงบอกจำนวนครั้งในการวาดเว้นวรรคและจำนวนครั้งในการวาดเครื่องหมายอัศเจรีย์ต่อเนื่อง นี่คือการวิเคราะห์องค์ประกอบต่าง ๆ ของโปรแกรมนี้:
สตริงที่เข้ารหัส
อักขระ 31 ตัวแรกของสตริงนี้จะถูกละเว้น ที่เหลือมีคำแนะนำสำหรับการวาดภาพ อักขระแต่ละตัวกำหนดจำนวนช่องว่างหรือเครื่องหมายอัศเจรีย์เพื่อวาดติดต่อกัน
ด้านนอกสำหรับห่วง
การวนซ้ำนี้ไปเหนืออักขระในสตริง แต่ละซ้ำเพิ่มมูลค่าของโดยหนึ่งและกำหนดตัวอักษรถัดไปในสตริงb
a
วงในสำหรับวง
การวนซ้ำนี้จะดึงอักขระแต่ละตัวและขึ้นบรรทัดใหม่เมื่อถึงจุดสิ้นสุดของบรรทัด a - 64
จำนวนตัวอักษรที่วาดเป็น ค่าของc
ไปจาก 10 ถึง 90 และรีเซ็ตเป็น 10 เมื่อถึงจุดสิ้นสุดของบรรทัด
putchar
สิ่งนี้สามารถเขียนใหม่เป็น:
++c;
if (c==90) { //'Z' == 90
c = 10; //Note: 10 == '\n'
putchar('\n');
}
else {
if (b % 2 == 0)
putchar('!');
else
putchar(' ');
}
มันวาดตัวละครที่เหมาะสมขึ้นอยู่กับว่าจะb
เป็นคู่หรือคี่หรือขึ้นบรรทัดใหม่เมื่อมีความจำเป็น