Жизнь текла своим чередом и я занимался своими любимыми делами: ел, спал и читал хабр. И вдруг, как грибы после дождя, начали появляться статьи, в заголовках которых присутствовали две ключевые фразы: «JavaScript» и «30 строк кода». Только вот незадача: в JavaScript я новичок и написать что-нибудь серьезное, как мои предшественники, не смогу, а поучаствовать в этом марафоне хочется.
После недолгих раздумий было решено написать программу 'Hello World!' не в одну строчку (как делают нормальные люди, которым есть чем заняться), а в тридцать. После появления этого поста желание немного поубавилось, но я все-таки решил рискнуть.
Первоначальная идея, объявить переменные для каждого символа в фразе 'Hello World!' и записать инструкцию alert(h+e+...+'!');
в несколько строк, показалась глупой, и дальнейшие размышления привели к следующему коду:
var alphabet = ['!'],
code = [27, 8, 5, 12, 103, 15, 28, 27, 23, 105, 18, 104, 4, 0],
frase = '';
for (var i = 97; i <= 122; i++) {
alphabet[i - 96] = String.fromCharCode(i);
}
function wat(pamparam, up) {
if (up === 0) frase += alphabet[code[pamparam]];
else frase += alphabet[code[pamparam]].toUpperCase();
}
for (var m = 0; m <= code.length - 1; m++) {
if (code[m] - 100 > code.length-1 || (code[m] == code[(code[m] - 100)])) throw 'stop';
}
function rep(k) {
if (code[k] >= 100) rep(code[k] - 100);
else wat(k, 0);
}
for (var j = 0; j < code.length; j++) {
if (code[j] >= 100) rep(code[j] - 100);
else if (code[j] == 28) frase += ' ';
else if (code[j] == 27) wat(++j, 1);
else wat(j, 0);
}
alert(frase);
Ссылка на fiddle.
Особенности
Фраза 'Hello World!' задается в виде массива code
, составленного по простым правилам. Если кто-нибудь решит изменить этот массив и создаст его с ошибками, то цикл:
for (var m = 0; m <= code.length - 1; m++) {
if (code[m] - 100 > code.length-1 || (code[m] == code[(code[m] - 100)])) throw 'stop';
}
убережет его от бесконечной рекурсии, которая возможна в функции rep();
Итого
В итоге имеем абсолютно бесполезную и никому не нужную программу на JavaScript, занимающую всего 30 строк.
P.S. Данный пост был написан утром 19-го ноября, когда, как выразился один мой знакомый, «массовый психоз на хабре» не достиг своего предела. И вот спустя сутки кто-то добрый (спасибо ему) прислал мне инвайт и я публикую свою бесполезную статью.
Автор: PyramidHead