Напишите фрагмент кода JavaScript, который вызывает alert
массив, содержащий первые 50 чисел Фибоначчи по порядку. Вы можете использовать только следующие символы: +!()[]
.
Для справки, ваш код должен быть функционально равен следующему:
var fib = [], a = 1, b = 1;
for (var _ = 0; _ < 50; _++) {
fib.push(a);
var t = a; a = b; b = t + a;
}
alert(fib);
Вы не можете размещать контент на веб-странице - ваша программа будет запущена в консоли about:blank
. Точно так же вы не можете «обманывать» и сохранять любые настройки в файлах cookie, настройках или других данных. Ваше решение должно работать при любой новой установке последней версии Google Chrome или Firefox на любую ОС. В случае сомнений старайтесь оставаться максимально портативным.
Наименьший исходный код в байтах побеждает.
Ответы:
7576 символов
Firefox / Safari 9 (WebKit Nightly)
Основная заставка
fill()
Большинство не буквенно-цифровых символов (особенно
;
и>
) очень дороги, поэтому я действительно стараюсь минимизировать их использование.скрипт
Хром (11 605)
Оригинал:
;
это очень дорого.Сценарий: пастебин .
источник
falsefalse
как имя переменной меньше символов , чемt
илиf
или что - нибудь, может помочь вам бриться несколько больше скидка! Жаль, что мы не можем произвести больше, чем 50, хотя, потому что50
короче, чем48
....pop()
,.shift()
и ,.splice()
но все они добавляют слишком много символов! Думаю, у @vihan это есть! Еслиalert()
принятие на каждом этапе приемлемо, возможно, можно полностью пропустить обратное, но я чувствую, что это немного нарушает правила ...15 943 байта
Я просто жестко запрограммировал значения и использовал компилятор JScrewit .
Оригинальный код:
Код JSFuck:
Хотя в обычном js жесткое кодирование длиннее, чем в генераторе в гольфе, числа (сравнительно; P) легко представлены в JsFuck.
источник
302871241912288 байтОригинальный гольф:
Unshift и Reverse дешевле Push для небольшой экономии:
Не подходит! 30 000 символов! Pastebin здесь.Я пробовал jsfuck.com, но это дало мне 62399 байт.
Следуя предложению Stefnotch, изменил совместимость только с Chrome и резко сократил счет. JSFuck сгенерирован jscrew.it :
источник
12,2851218312069113991125211105 БайтОригинальный код:
После удаления точки с запятой и замены ее на '\ n': (Спасибо, Дом Хастинг .)
Использование «concat» вместо «push» для сохранения некоторых байтов:
Обновленный код:
Удаление пустого места:
Удаление пустого места после '+':
Код JSFuck:
источник
falsefalse
иfalse0
в качестве имен переменных вместоt
и,f
и\n
число символов меньше, чем;
(в любом случае, согласно jscrew.it), так что ты сможешь заменить их и для сохранения. Если это возможно , чтобы показать первые 52 номеров, 50 составляет половину размера 48 тоже ... Надежда , что помогает!for(i=0;i<48;)
иf.push
для большего сохранения и замены имен переменных, безусловно, сохранит некоторыеf
=(![]+[])[+[]]
vs.falsefalse
=![]+[![]]
иi
=([![]]+[][[]])[+!![]+[+[]]]
vs.false0
=![]+[+[]]
.concat
Это был единственный способ помочь мне уменьшить этот метод!Firefox, 7446 байт
Источник:
источник
14,097 байт
Впервые выполняя один из них или кодирование на этом языке, поэтому я вернусь и посмотрю, смогу ли я получить его меньше
Оригинальный код:
Код JSFuck:
источник