- PVSM.RU - https://www.pvsm.ru -

Hello World на JavaScript (30 строк кода)

Жизнь текла своим чередом и я занимался своими любимыми делами: ел, спал и читал хабр. И вдруг, как грибы после дождя, начали появляться статьи, в заголовках которых присутствовали две ключевые фразы: «JavaScript» и «30 строк кода». Только вот незадача: в JavaScript я новичок и написать что-нибудь серьезное, как мои предшественники, не смогу, а поучаствовать в этом марафоне хочется.

После недолгих раздумий было решено написать программу 'Hello World!' не в одну строчку (как делают нормальные люди, которым есть чем заняться), а в тридцать. После появления этого [1] поста желание немного поубавилось, но я все-таки решил рискнуть.

Первоначальная идея, объявить переменные для каждого символа в фразе '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 [2].

Особенности

Фраза '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

Источник [3]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/48756

Ссылки в тексте:

[1] этого: http://habrahabr.ru/post/202652/

[2] fiddle: http://jsfiddle.net/3yGqt/

[3] Источник: http://habrahabr.ru/post/202790/