Этот конкурс посвящен победителю конкурса «Лучшая картина» на Оскаре 2017 « La La Land Moonlight»!
Ваша задача - напечатать текст
La La Landсделать паузу в одну секунду, затем изменить текст, чтобы показать
Оригинальный текст (La La Land) должен иметь зачеркнутый текст . Это может быть достигнуто либо путем очистки экрана, рисования поверх исходного текста, либо с помощью любых других умных решений.La La LandMoonlight
Это код-гольф, поэтому побеждают младшие байты. Применяются стандартные правила игры в гольф.
code-golf
string
kolmogorov-complexity
animation
vikarjramun
источник
источник
La La La(nd)
шаблонОтветы:
Желе , 31 байт
Протестировано с xterm и
LANG=en_US
. Не работает на TIO по нескольким причинам.HexDump
верификация
Фон
В этом ответе используются управляющие символы и escape-последовательности ANSI .
0d
(<CR>
) используется для возврата к началу вкладыша после печати La La Land .9b 39 6d
(<CSI> 9 m
) используется для активации зачеркнутого текста перед печатью La La Land во второй раз.9b 6d
(<CSI> m
) используется для сброса переднего плана и фона в режим по умолчанию, тем самым отключая зачеркнутый текст перед печатью Moonlight .Как это устроено
источник
Vim, 37 байт
Довольно простое решение.
Вот анимация его запуска:
источник
gs
спит на одну секунду.HTML,
153148 байтИспользование CSS анимации. Проверено только на Firefox и Chrome.
источник
@keyframes
объявлений последним и удалить две закрывающие фигурные скобки.}
отсутствует, поэтому, к сожалению, этого сделать нельзя.HTML + JavaScript, 18 + 59 = 77 байт
К сожалению, не существует эффективного способа повторного использования
O.innerHTML
...источник
setTimeout('a=O.innerHTML;a=a.strike()+" Moonlight"',1e3)
работать?a
там не изменитсяO.innerHTML
.Октава,
8166 байт15 байтов сохранено благодаря @Stewie
Онлайн демо здесь .
Хотя демонстрация показывает два отдельных графика, при запуске в настольной версии MATLAB она показывает первый график, ждет 1 секунду, а затем добавляет вторую строку к тому же графику.
Поскольку Octave не поддерживает
axes
зачеркивание текста, я вместо этого решил отображать текст внутри объекта на рисунке и отображать «зачеркивание», отображая'--------'
поверх исходного текста (первоначальная идея @Stewie). Ранее я на самом деле наметилline
объект для удара через'La La Land'
источник
text(0,.5,'La La Land');pause(1);text(0,.5,'---------- Moonlight')
.'-'*8+
вместо тире?.
)Баш,
70, 6966 байт-4 очка благодаря Райли
echo La La Land;sleep 1;echo -e "\r\e[9mLa La Land\e[0m Moonlight"
Кредиты на ответ Сильвен Пино на AskUbuntu для зачеркивания
источник
\r
второго . Кроме того, вам не нужно место перед вторым .echo
clear
echo
clear;
должен идти первым. И у вас есть ненужное место в; echo
.\e[A
, поэтому нетclear
необходимости. Для получения дополнительной информации об этом смотрите меня .s="La La Land";echo $s;sleep 1;echo -e "\e[A\e[9m$s\e[0m Moonlight"
echo -n La La Land;sleep 1;echo -e "\r\e[9mLa La Land\e[0mMoonlight"
QBasic, 61 байт
Используя графический режим, проведите реальную линию по тексту. Вот как это выглядит в Qb64 :
Код должен быть довольно понятным, но вот версия без заглядывания:
источник
MATL, 46 байт
Поскольку в MATL нет поддержки управляющих кодов или форматирования текста, это решение просто чередует
'La La Land'
и'-----------'
максимально быстро имитирует зачеркнутый текст.объяснение
источник
Bash + PV , 50 байтов
Это основано на ответе Bash @ DigitalTrauma .
♪
представляет возврат каретки ( 0x0d ),›
байт CSI ( 0x9b ).HexDump
верификация
Как это устроено
printf повторяет свою строку формата столько раз, сколько необходимо для исчерпания других аргументов. Поскольку существует одно вхождение
%b
и два аргумента (9m\\0
иm\ Moonlight
), он создаст следующий поток байтов.Это делает следующее.
\r
переводит курсор в начало строки.La La Land
печатается дословно.\x9b9m
активирует зачеркнутый текст.\0
устанавливает маркер конца строки дляpv -0
.\rLa La Land
делает так же, как и раньше.\x9bm
сбросить передний план и фон в режим по умолчанию, отключив зачеркнутый.Moonlight
печатается дословно.Наконец,
pv -0L1
печатает одну строку с нулем в конце в секунду, вводя желаемую задержку.источник
♪
помогло вам в игре в гольф, или вы специально хотели использовать его с La La Land? Мне это нравится!♪
иногда, просто счастливое совпадение.pv
вместо того, чтобы,sleep
как все, прекрасно.pv
- это то, что я взял из связанного ответа Bash, так что я не могу поверить в это.HTML + JavaScript, 10 + 63 = 73 байта
источник
PHP (
867569 байт)Использует символ UTF-8 U + 0336 для зачеркивания.
Редактировать: Сохранено 17 байт с предложениями @Titus прокомментировал
источник
sleep
всегда возвращает 0; так что вы можете просто сделатьsleep(1)?:" ̶L̶a̶ ̶L̶a̶ ̶L̶a̶n̶d̶ Moonlight"
(-3 байта).\r
вместо того, чтобы\033[10D
сохранять 6 байтов, а включение его в финальную строку сохраняет еще 4.U+0336
для зачеркивания".La La Land<?=
вместо того, чтобы<?="La La Land",
сохранить еще 3 байта.Pyth - 47 байт
Делает зачеркивание сейчас.
источник
"
впереди +1.<exmpty line>
? Я бы предложил<pre>
теги.C
8786 байтБезголовая версия:
источник
char
и*
.f()
в разряженной версии, нет?f()
.HTML + JavaScript, 100 байт
источник
GNU sed + sleep,
6358 байтРедактировать: сохранено 5 байт, на основе комментариев Digital Trauma
Ожидание между двумя инструкциями печати не может быть сделано с помощью одного только sed, и поэтому я называю это
sleep 1
. Можно сделать системный вызов из sed, используяe
команду, которая является расширением GNU.Чтобы создать зачеркнутый текст (строка 3), к каждому символу добавляется «объединение длинных штрихов», U + 0336 . После этого я перемещаю курсор вверх на 1 строку, эффективно заменяя старый текст при печати чего-либо нового, используя так называемые ANSI Escape-последовательности . Они интерпретируются терминалом как специальные команды форматирования. Вы можете найти больше информации о них здесь .
Объяснение:
источник
\c
, хорошая находка! Что касается этого специального юникода, я впервые слышу об этом, но он действительно работает. Когда он печатается на этой странице, он объединяется сs
разделителем команд:
, поэтому немного странно видеть это сначала.Java 7,
207206171139 байтЯ вроде обманываю с этим первым ответом, потому что я использую сквозной Unicode .
Объяснение:
Java 7 (с AWT),
444429341 байтВычеркнуто 444 все еще регулярно 444; (
Поскольку консоль Java не имеет разметки, такой как зачеркнутый, вам придется использовать Java AWT. И если вы думаете, что консоль Java уже многословна, то это еще хуже (я знаю, я знаю, большинство из вас даже не могли представить себе, что Java 7 хуже ...)
Объяснение:
Выходной GIF:
источник
String[] a
и использовать1e3
вместо него1000
1e3
, это двойной, иThread.sleep
ожидает долго.1000
короче чем(long)1e3
. :)Swing
, неSpring
так ли? У меня чуть не случился сердечный приступ! Пружина в Codegolf ... Кроме того, чтобы сохранить байты, вы можете использовать AWT вместо Swing.void m(){new Frame(){public void paint(Graphics g){g.drawString("La La Land",99,99);try{Thread.sleep(1000);}catch(Exception e){}AttributedString s=new AttributedString("La La Land Moonlight");s.addAttribute(java.awt.font.TextAttribute.STRIKETHROUGH,1>0,0,10);g.drawString(s.getIterator(),99,99);}}.show();}
Python 3, 90 байт
Используйте Юникод (U + 0336) для прохода, потому что терминал macOS не поддерживает эту
\e[9m
команду.источник
Arduino,
332331 байтНе соревноваться, просто для удовольствия.
Ведомость материалов:
источник
#include
Python3, 99 байт
источник
l = 'La La Land
не могли бы вы избежать+s
для -2 символов? ,Баш + PV, 62
источник
SmileBASIC, 45 байт
На один байт благодаря магическому трюку 12Me21.
Насколько я знаю, у SB нет зачеркнутых символов, поэтому я использовал
GLINE
вместо этого. Очевидно, предполагает четкое отображение, используйте,ACLS
если вам нужно.источник
AHK, 102 байта
Я немного обманул, чтобы получить зачеркнутый текст, используя комбинированный символ Юникода с длинным штрихом . Это может создать странный вид в зависимости от ваших настроек. Блокнот дает хороший внешний вид.
AutoHotkey явно не самый эффективный язык для этого, но это было забавное испытание. Будьте осторожны, когда запускаете его, потому что он не создает свой собственный дисплей и стирает весь текст любого активного окна.
источник
Swift, 392 байта
Swift + UIKit действительно не идеален для игры в гольф! Запустите это на игровой площадке XCode, и результат будет показан на панели предварительного просмотра.
источник
l.textColor=UIColor.red
необходимо?Желе , 41 байт
Не работает онлайн переводчик.
источник
Python (137 байт)
источник
import
. Я бы также предложил сохранить "La La Land" в качестве переменной.TI-BASIC,
5753 байтаОбратите внимание, что здесь используется способность TI-84 + CE с новейшей ОС, чтобы сделать паузу на 1 секунду. Это вернет синтаксическую ошибку на TI-84 +. Для тестирования вы можете пропустить 1-секундную паузу, удалив эту строку. Также не забудьте сначала нажать Zoom, 6, чтобы использовать настройки окна по умолчанию, иначе команда line не будет работать.
источник
SpecBAS - 58 байт
Каждый символ имеет размер 8x8 пикселей, поэтому рисует линию от 0,4 до относительной позиции 80,4 (80 добавляется к первой координате и 0 к второй, чтобы он оставался на одной линии).
источник
НЕФТЬ , 76 байт
Заменить на
⎋
escape-символ и↩︎
возврат каретки. В OIL отсутствует какая-либо команда sleep, поэтому я эмулирую ее, используя цикл с обратным отсчетом от 89999 до 1. На моем компьютере это занимает около одной секунды, а на вашем - нет.Первые 3 строки игнорируются интерпретатором, затем он печатает (
4
) вторую строку (строка 1; «La La Land»). Следующая структура представляет собой цикл, который уменьшает большое число в конце, пока оно не станет равным 1. В конце я просто печатаю первые 3 строки.источник
PHP, не конкурирующий (64 байта)
использует UTF-8:
--
расшифровывается,U+0336
но я уверен, что он не работает в одиночку.Если это не так, попробуйте
~"1I"
или~I1
вместо--
(+3 или +1 байт).Нет времени, чтобы сохранить его в файл или выяснить, как настроить мою консоль на UTF-8; поэтому я не мог проверить ни один из них; но кто может: пожалуйста, дайте мне знать, полный это BS или нет.
источник
Powershell, 63 байта
Работает только в PowerShell ISE. Не конкурирует, потому что зачеркивание смещено на один символ, и я не могу это исправить.
источник