В основному, рядок - це кодування зображення довжиною пробігу : чергування символів у рядку кажуть, скільки разів намалювати пробіл і скільки разів намалювати знак оклику послідовно. Ось аналіз різних елементів цієї програми:
Зашифрований рядок
Перші 31 символ цього рядка ігноруються. Решта містять інструкції щодо малювання зображення. Окремі символи визначають, скільки пробілів або знаків оклику слід малювати послідовно.
Зовнішня для петлі
Цей цикл переходить через символи в рядку. Кожна ітерація збільшує значення b
одиниці і присвоює наступний символ у рядку a
.
Внутрішня для петлі
Цей цикл малює окремі символи та новий рядок, коли він доходить до кінця рядка. Кількість намальованих символів - a - 64
. Значення go c
переходить від 10 до 90, а скидає до 10, коли буде досягнутий кінець рядка.
The putchar
Це можна переписати як:
++c;
if (c==90) { //'Z' == 90
c = 10; //Note: 10 == '\n'
putchar('\n');
}
else {
if (b % 2 == 0)
putchar('!');
else
putchar(' ');
}
Він малює відповідний символ, залежно від того b
, парне чи непарне чи новий рядок, коли це потрібно.