मूल रूप से, स्ट्रिंग छवि का रन-लंबाई एन्कोडिंग है: स्ट्रिंग में वैकल्पिक वर्ण कहते हैं कि किसी स्थान को खींचने के लिए कितनी बार, और कितनी बार एक विस्मयादिबोधक चिह्न को लगातार खींचने के लिए। इस कार्यक्रम के विभिन्न तत्वों का विश्लेषण इस प्रकार है:
एन्कोडेड स्ट्रिंग
इस स्ट्रिंग के पहले 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
सम या विषम है, या आवश्यकता होने पर एक नई रेखा ।