Это мой первый вызов, поэтому я держу его довольно простым.
Если вы когда-либо набирали telnet towel.blinkenlights.nl
в командной строке и нажимали ввод, вы испытаете радость asciimation. Asciimation довольно просто делает анимацию с помощью ascii art. Сегодня мы сделаем очень простую оценку человека, занимающегося прыжковыми домкратами.
Будет две картинки ascii, которые мы соберем в одну asciimation. Номер 1:
_o_
0
/ \
Номер 2:
\o/
_0_
<blank line>
Обратите внимание, что второй имеет пустую строку в конце.
Итак, ваша программа должна выполнить следующие шаги:
- Очистите экран консоли.
- Распечатайте правильное изображение ascii art.
- Установите флаг или что-то, чтобы вы знали, чтобы сделать другое изображение в следующий раз.
- Подождите минуту (около секунды).
- Продолжайте в 1.
правила
- Ваша программа должна быть (теоретически) бесконечным циклом.
- Используемый вами язык программирования должен быть создан до того, как этот вызов был опубликован.
- Это код-гольф , поэтому выигрывает самый короткий код в байтах.
- Применяются стандартные лазейки.
Наслаждайтесь!
clear
) отличается от команды Windows (cls
)Ответы:
CJam,
5145423836 байтВыше используется обозначение каретки; последовательность
^[
на самом деле является символом ASCII с кодовой точкой 27.Я позаимствовал escape-последовательность (
^[c
) из ответа @DomHastings ( с его разрешения ), чтобы сохранить 4 байта.верификация
Вы можете воссоздать файл следующим образом:
Чтобы запустить код, загрузите интерпретатор CJam и выполните это:
Это будет работать на любом терминале, который поддерживает console_codes или соответствующее подмножество. 1
Как это работает
1 Прыгающие домкраты будут выглядеть лучше, если вы спрятали курсор терминала перед запуском программы. Например, в Konsole вы можете установить цвет курсора в соответствии с цветом фона. Это должно быть сделано через настройки вашего терминала, так как
^[c
перезагружает терминал.источник
Calculate the factorial of 60,000 and discard the result. This takes "about a second".
;)2Fm*
, это хорошая альтернатива на один байт6e4m!
для «бессмысленной операции, которая возвращает истинное значение и занимает около секунды для вычисления».e!
, но они, кажется, запомнились. После первой итерации у бедного Джека случается сердечный приступ ...Pyth -
414039 байт(Я считаю, что
\x1b
это один байт, так как SO уничтожает специальные символы).Очевидно, что он не работает в режиме онлайн, поскольку его а) бесконечный цикл и б) использует коды выхода терминала.
Я был удивлен, узнав, что augmented-assign работает с post-assign. Пиф потрясающий.
источник
.V0
качестве бесконечной петлиQBasic, 58 байт
Протестировано на QB64 .
Правильный язык для проблемы может быть на удивление конкурентоспособным, даже если он обычно многословный.
?
Ярлык дляPRINT
помогает, конечно , тоже.CLS
это сло ухо сек Creen;RUN
без аргументов перезапускает программу, что является кратчайшим способом получить бесконечный цикл.Единственный другой трюк здесь - это печать
0
в середине первого изображения. QBasic ставит пробел перед (и после) неотрицательными числовыми значениями, когда печатает их, что приводит к0
. Сохранено 3 символа" 0"
.Я также могу указать, что задержка в этом коде буквально секунда и не зависит от машины. ; ^ P
источник
Perl (* nix) , 54 байта
(
\x1b
считается за 1 байт, но для упрощения тестирования его удалось избежать.) Вышеизложенное было проверено с помощью Bash и сокращено еще на один байт благодаря @Dennis !Perl (Windows) , 56 байт
Спасибо @Jarmex за его тестирование и советы!
источник
print"@[2J"
заменяя @ внутри кавычек на ASCII 27 (для целей тестирования этоprint"\033[2J"
может быть проще).\e
его буквальным байтом ESC. - Не возражаешь, если я использую\ec
трюк в своем ответе?"\e"
что в любом случае это всего лишь ярлык для этого. Пожалуйста продолжай!Javascript (ES6),
109937970 байт + HTML,1210 байт =1201069180 байтДовольно просто. Использует строки шаблона для хранения изображений и переключает логическое значение, чтобы определить, какое использовать.
ПРИМЕЧАНИЕ. Это решение может быть недопустимым, поскольку оно фактически не использует консоль. Однако я не верю, что возможно очистить консоль браузера с помощью JS, по крайней мере, при использовании Firefox.
источник
<pre id="a"/>
вставите часть HTML, вам не нужны<pre>
теги в коде.document.getElementById`a`
наdocument.body
.<pre>
и делаяdocument.all[4]
. Это позволяет вам избавиться от строки оболочки и просто сделать этоinnerHTML=a?`...`:`...`}
.Баш,
8684 байтаисточник
Python 2, 99 байт
Работает на Windows
Для машин UNIX добавьте два байта:
источник
awk -
95 92 86 8483Хорошая тренировка: D Просто подумала, выполнимо ли это. Нет цен, чтобы получить хотя ...;)
Если кто-то хочет проверить это: после запуска программы вы должны нажать Ctrl + D (конец ввода), чтобы фактически запустить блок END. Чтобы прекратить это, я должен использовать Ctrl + Z.
У меня также есть это, которое составляет всего 74 байта, но оно начинается с паузы в секунду, которая не является желаемым поведением, я думаю
источник
Пакет - 82 байта
Редактировать: отключил команду тайм-аут и удалил лишнюю новую строку.
Я видел 2 других похожих ответа, поэтому я не хотел публиковать это, но это мой первый гольф.
источник
timeout 1
будет выводить много незапрошенного вывода на консоль>mul
это ошибка типа, или, может быть, вы не знаете, что этоnul
такое. ru.wikipedia.org/wiki/Null_deviceBBC BASIC, 75 байтов
Обратите внимание, что токенизация сбрасывает его до 75 байт. Пробелы добавляются в IDE.
источник
JavaScript ES6,
10095 байтЛоги в консоль. Проверено на Safari Nightly
источник
Пакетный,
151130118 байтисточник
@PING 127.0.0.1 -n 2>NUL
вместо этого. По умолчанию Ping ожидает около секунды ожидания между попытками, так что с точностью до нескольких миллисекунд это будет достаточно близко для этой задачи. СправкаCBM 64 BASIC V2,
121119112117 байтисточник
?CHR$(147)
экран? Если это так, вы можете сэкономить 2 байта теперь, когда ОП подтвердил, что пустая строка не должна быть явно напечатанаЮлия, 70 байт
(в ОС Windows , заменяя
clear
сcls
, благодаря undergroundmonorail)В Linux 72 байта
При этом используются реальные переводы строк вместо
\n
сохранения байта; в противном случае,i
это либо 1, либо -1 в качестве «флага», и он использует рекурсию для достижения бесконечного цикла. Назовите это какn(1)
или простоn()
.Также
run(`clear`)
/run(`cls`)
использует команду оболочки для очистки окна, потому что у Джулии нет встроенной команды очистки окна.источник
clear
наcls
(я полагаю, я ничего не знаю о Джулии).cls
работает (см. Мой ответ)Пакет Windows, 83
89Редактировать убрал пустую строку после уточнения по ОП
Если вы избавитесь от пустой линии в прыгающем человеке (который все равно не виден), то результат будет 83Примечание:
timeout
отсутствует в Windows XP. Он работает в Vista или более новых версиях. Более того,timeout
он не является точным для второго, поэтому это идеальный выбор для реализации шага 4 (подождите минутку ( около секунды ))источник
Javascript (ES6), 82 байта
Модификация моего предыдущего ответа , использующая консоль. Частично работает в Firefox, но очищает только консоль в Chrome, AFAIK.
Как всегда, предложения приветствуются!
источник
JavaScript,
929189 байтc
отображается вместо очистки консоли, прерывая вывод)Удаление
"\033c"+
из приведенного выше кода, следующее работает в браузере, но не очищает консоль.источник
x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)
По какой-то причине JS не позволяет мне передаватьconsole.log
функцию и человека ASCII в качестве дополнительного параметра.console.log
кsetInterval
, причина в том , что мы не передаем в функцию, но называть его. Это будет оцениваться , прежде чемsetInterval
был вызван, и с тех порconsole.log
не возвращается, она по существу проездомundefined
кsetInterval
. Есть смысл? И спасибо за сокращение его!x=0;setInterval(console.log,1e3,"\033c"+[
_o_ <перевод строки> 0 <перевод строки> / \ `,\\o/<line break>_0_
] [x ^ = 1])` На самом деле, это не приносит ошибка, если я заменюconsole.log
наalert
."\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]
оценивается перед вызовомsetInterval
.Рубин, 79 байтов
Требуются коды выхода.
источник
Далее 86 байт
Требуется GNU Forth для экранированных строк. Чтобы запустить не-GNU Forth, просто измените
S\"
наS"
, и экранированные символы не будут печататься правильно.источник
CBM BASIC v2.0 (68 знаков)
Вышесказанное требует некоторого объяснения, так как разметка Stack Exchange неправильно представляет символы PETSCII:
источник
пчелиный воск ,
119113 байтОбъяснение важных частей программы:
Они
f
помещают значения в gstack (глобальный стек) для последующего использования. Эти значения доступны с помощью0gh
(или зеркальныхhg0
) иhg
(gh
) инструкций.h
вращает gstack вверх,g
считывает верхнее значение gstack и помещает его в lstack (локальный стек) пчелы (указатель инструкции).Подробное объяснение следует позже, если это необходимо. Может быть, с анимацией.
источник
Deadfish , неконкурентоспособный (658 байт)
Это неконкурентное решение , так как оно не полностью соответствует требованиям вызова. Deadfish - очень странный интерпретируемый язык, который имеет только 4 команды и аккумулятор. Аккумулятор представляет собой однобайтовую переменную, инициализированную в 0. 4 команды:
i
= Увеличить аккумуляторa = a + 1
d
= Уменьшить аккумуляторa = a - 1
s
= Площадь аккумулятораa = a * a
o
= Вывести аккумуляторprint(a)
Поскольку язык не включает повторение, очистку экрана или задержки, он не соответствует требованиям. Ожидаемый результат:
Объяснение кода:
Интерпретатор Deadfish в Python 3:
источник
Noodel , неконкурентный 24 байта
Неконкурентный, потому что Нудель родился после того, как был создан вызов :)
Попытайся:)
Как это работает
В настоящее время нет версии Noodel, которая поддерживает синтаксис, использованный в этой задаче. Вот версия, которая делает:
24 байта
источник