После недолгих раздумий было решено написать программу ‘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-го ноября, когда, как выразился один мой знакомый, «массовый психоз на хабре» не достиг своего предела. И вот спустя сутки кто-то добрый (спасибо ему) прислал мне инвайт и я публикую свою бесполезную статью.
ссылка на оригинал статьи http://habrahabr.ru/post/202790/
Добавить комментарий