Многие электронные устройства, особенно старые, будут мигать, 12:00
когда время не установлено. Цель этой задачи - воссоздать это.
В частности, задача состоит в том, чтобы отображать 12:00
и --:--
альтернативно в бесконечном цикле .
Период должно быть 1 секунда, равномерно разделено на два периода в 0,5 секунды. Здесь «1 секунда» и «равномерно» можно интерпретировать свободно. Например, допустимо, если код делает паузу на 0,5 секунды между отображением строк, даже если результирующий период будет немного больше 1 секунды. Начальная пауза перед отображением первой строки является приемлемой.
Каждая новая строка может отображаться либо путем замены предыдущей строки, либо в новой строке . Конечный пробел допускается, за исключением того, что если каждая новая строка находится на отдельной строке, между последовательными строками не должно быть пустых строк.
Самый короткий код в байтах побеждает.
Ответы:
Желе , 20 байт
Как это работает
источник
HTML / CSS,
131108106101 +1817 =149126125123118 байтРедактировать: 23 байта сохранены благодаря @insertusernamehere. Сохранено 1 байт путем переключения с
<pre>
на<tt>
. Сохранено 2 байта благодаря @darrylyeo. Сохранено 5 байт благодаря @DBS.источник
a{position:absolute}
но совсем забыл оpre
...<tt>
.}}
полностью.margin-left
до,margin
так как вы работаете сверху слева в любом случаеmargin:-5ch;
должны иметь тот же эффект.Shell и
pv
, 26 байтовЭто использует
yes
стандартный инструмент иpv
элемент конвейера Shell для измерения данных, проходящих черезисточник
-qlL2
для создания 2 строк по секундам вместо-qL12
: 12 символов в секунду. Длина сценария одинаковаPython2,
807573696766 байтЯ заметил, что моя магия строк стала немного длиннее, чем выбор строки из массива.Неважно, разобрался.Пояснение :
Я установил счетчик n на 0, который будет переключаться между 0 и 1.
Я бесконечно петлю с петлей
while 1
.Я создаю строку
1-2-::0-0-
, которая содержит строку12:00
и--:--
пересекается.Начиная с индекса 0 с шагом 2 получаем:
12:00
Начиная с индекса 1 с шагом 2 получаем:
--:--
Я использую n, чтобы создать повторяющуюся последовательность 0 , 1 , 0 , 1 , 0 ... которая будет начальным индексом строки.
n^=1
в каждом цикле, мы получаем эту последовательность.^
будучи XOR-оператором.n^=1
приводит к 1n^=1
приводит к 0.5
->0.5
) секунды.@FlipTack сэкономил 4 байта! -> Поместите цикл в одну строку.
@Rod сэкономил 2 байта! ->
n+=1
чтобыn^=1
, таким образом,n%2
чтобыn
.@xnor сохранил байт! ->
while 1
->while[time.sleep(.5)]
.источник
n+=1
сn^=1
, а затем использовать[n::2]
, сохраняет 2 байта и избежать больших чисел с:print"1-2-::0-0-"[n::2]
кprint"\b"*6+"1-2-::0-0-"[n::2],
ней добавит несколько байтов , но он будет мигать на месте\r
вместо того,\b\b\b...
чтобы перейти к началу строки. Но в любом случае это только добавит байты к текущему решению.while[time.sleep(.5)]:
.Октава,
63626155 байтСохранено два байта благодаря Тому Карпентеру! Использование одной строки вместо двух строк в массиве ячеек было короче.
Объяснение:
Сохранено несколько байтов, потому что Octave не требует двоеточия или точки с запятой между
flip(c)
иdisp()
, а также междуpause(.5)
иend
.источник
flip
вместо счетчика!JavaScript, 59 байт
объяснение
setInterval('...',500)
устанавливает интервал для выполнения кода в строке каждые 500 миллисекунд или 1/2 секунды.y=1
устанавливает переменнуюy
, в 1 изначально. Таким образом, первое, что печатается,12:00
потому чтоy
используется для доступа к массиву.console.log(...)
записывает что угодно на консоль, в этом либо12:00
либо--:--
.["12:00","--:--"][y^=1]
создает массив со строками, содержащими оба состояния. Затемy
используется для доступа к одному из элементов. Наконец,^=
или XOR составной оператор делаетy = y ^ 1
. Это просто инвертирует бит, потому что1 ^ 1
равно 0, и0 ^ 1
равно 1, аналогично тому, что сделал @TuukkaX . Таким образом, записанная строка чередуется между двумя элементами в массиве и, таким образом, создает эффект мигания.источник
y=1;setInterval('console.log(y?"12:00":"--:--");y=!y',500)
You can save some bytes with setInterval(...,i=500) :-)
. У нас в основном тот же ответ, и он работает для вас тоже.V ,
3130272524 байтаСохранено 5 байтов благодаря @ nmjcman101, поменяв порядок
12:00
и--:--
так, чтоk
можно удалить любой, удалив,ò
чтобы он мог быть добавлен неявно в концеБлагодаря @DJMcMayhem удалось сохранить 1 байт, поместив оба
12:00
и--:--
в одну строкуСтарое решение:
<ESC>
является0x1b
HexDump:
объяснение
Gif (устаревший)
Примечание: у меня включена подсветка
источник
ò
дано неявно, так что вы можете удалить его.ò
. Он запускается только один разk
. Тогда вместоpkdd
вас можно просто использоватьVp
, так какp
в режиме визуального выбора эффективно заменяет выделение регистром по умолчанию.ò
, но если это работает сейчас, я думаю, вы сможете изменить егоòVp:sl500m
и позволить V добавить^Mò
2 байта.bash,
585645 байтсохранено 3 байта путем подавления--
после того,set
как 1-й аргумент является числом.Сохранено 16 байт с использованием синтаксиса @DigitalTrauma :
Затем потерять 5 байтов из-за комментария Цеппелина .
Это не может быть проверено в командной строке. Как мы говорим
$0
, это должно быть записано в скрипт для запуска.отбракованных
С небольшой подготовкой это может стать хорошим ( 412 байт ):
Или даже те же две строки, но с:
источник
s(){ echo $1;sleep .5;};for((;;)){ s 12:00;s --:--;}
printf '%%\041\n/Helvetica findfont\n24 scalefont\nsetfont\nnewpath\n%s %s moveto\n(%s) show\nshowpage\n' -2.456 0.550003 12:00 | gs -sDEVICE=pnmraw -r600 -g470x146 -sOutputFile=- -q - | pnmscale -width 160 | ppmtopgm | pgmtopbm | pbmtoascii -2x4
;-)f()(echo $1;sleep .5);f 12:00;f --:--;$0
Perl, 49 байт
В Perl
sleep
не может спать по длительности сильфона 1 сек, следовательно , использованиеselect undef, undef, undef, .5
(golfed путем заменыundef
с$,
) до сна .5 секунды.Другая интересная вещь:
$|
можно только держать0
или1
. Так$|--
что просто переключает его значение, с0
на1
.И, наконец,
{... ;redo}
действует как бесконечный цикл.источник
*> <> ,
4342 байтаПопробуй это здесь!
Я чувствую, что я должен быть в состоянии сделать это короче, у меня есть пара идей, чтобы попробовать ... В основном это делает стек
:1200----
. Он изолирует:
и переворачивает стек, вставляя:
в середину либо----
или1200
(в зависимости от того, что находится в конце стека).Я должен также отметить, что единственная инструкция *> <>, которую он использует, - это
S
(сон), в противном случае это правильная> <> программа.Обновление: 1 байт был сохранен путем сдвига
:
вправо вместо защиты с помощью регистра.объяснение
Инициализация
Здесь мы строим стек, который будем использовать для жизни программы.
Время выхода
Это раздел, где фактически выводится время. Первые 5 помещаются в стек, поэтому цикл ниже работает 5 раз.
Восстановление и обмен
Здесь мы восстанавливаем
:
из позиции, в которой это происходит после вывода, и в итоге мы получаем обратный стек. Это на самом деле красиво выходит в «время выхода», вызывая бесконечный цикл.45-байтовое решение
Попробуй это здесь!
Этот также в основном>> программа.
Я действительно думал, что при таком подходе можно будет сэкономить несколько байтов. Это довольно просто выводит
12:00
, тогда--:--
. Я сохраняю байты, повторно используя процедуру выводаo/!?l
(я даже повторно использую это зеркало как для входа, так и для выхода). Я использую несколько стеков для хранения состояния (имеет вывод12
или--
) и выбираю, в каком состоянии выводитьv>]?v
.Объяснения в ближайшее время! (1/2)
источник
HTML / CSS (только Chrome), 80 + 4 = 84 байта
Редактировать : атрибут «content» не подлежит анимации согласно спецификации CSS , но находится в браузере Chrome для настольных ПК.
источник
Noodel , неконкурентный 16 байтов
Нудель все еще находится в стадии разработки. Просто пытаюсь намочить ноги парой проблем.
Попытайся:)
Как это работает
Вот фрагмент кода :)
источник
QBIC ,
3733 байтаQBasic, к сожалению, может спать только целые секунды. Я посмотрю о разработке метода, который позволил бы увеличить гибкость в ближайшее время. Я ввел 1,
01
чтобы смоделировать.5
.Объяснение:
В более старых сборках QBIC
$
и(пробел) были зарезервированные символы. Для вызова функции QBasic, для которой нужны пробелы (например
sleep x
) или$
(left$(..)
), требуется кодовый литерал:Код в литеральном блоке кода передается непосредственно в QBasic без разбора QBIC. Благодаря разгрузке функций из этих символов (
$
стали'
, а теперь┘
вместо ( теперь есть новые строки) (alt-217)символы больше не рассматриваются QBIC как специальные символы и просто передаются. То же самое эффективно для строчного алфавита: оно используется для представления числовых переменных как в QBIC, так и в QBasic и остается неизменным.
SLEEP
Поэтому использование функциональности QBasic, которая не реализована в QBIC (как ), является просто вопросом не использования зарезервированных символов QBIC. Это стало проще благодаря недавним изменениям в символах команд.источник
JavaScript,
777672 байтаСпасибо Kritixi Lithos за 1 байт и L. Serne за 4 байта!
источник
1000
может быть сокращено до1e3
setInterval
иsetTimeout
примите строку с кодом в качестве первого аргумента, чтобы вы могли сохранить еще 4B:setInterval('l=console.log,l("12:00"),setTimeout("l(
-: -)",500)',1e3)
`
означает, что теперь это ES6, тогда как предыдущий ответ требовал только ES5.Python 2,
88857371 байтПопробуй это здесь!
Благодаря заимствованию идеи Стью Гриффина о листании списка, программа стала возможной. Неуправляемая версия с объяснением:
Спасибо @FlipTack за сохранение 14 байтов!
источник
PHP,
51 50471 байт сохранен из-за manatwork и еще 3 сохранены вставкой username здесь. Благодарность!
источник
usleep(5e5)
вызов наfor
третий параметр,,
разделитель становится ненужным, сохраняя 1 символ.while(1)
вначале.echo
и$i
и заменить\n
с фактическим символом новой строки.Pyth, 23 байта
В псевдокоде:
Использует преинициализированную переменную
Z
в качестве триггера и инвертирует ее состояние каждый раз, когдаif
пытается проверить условие.источник
рубин,
4742 байтаРубинового ответа пока нет, поэтому вот моя первая попытка:
источник
GNU sed, 39 байт
правок:
Golfed
Разъяснения
Попробуйте онлайн!
источник
постоянный ток (bash), 37 байт
Это работает, помещая две строки «12:00» и «-: -» в стек, а затем многократно меняя значения, печатая элемент наверху стека и спя полсекунды.
Чтобы запустить это, вы можете сохранить его в файле и затем набрать
или вы можете запустить его прямо из командной строки bash, набрав
источник
Perl 6 ,
48 4134 байтаисточник
for
цикла может сделать его немного короче:for |<12:00 --:-->xx* {sleep .5;.say}
say
возвращает 1:sleep .say/2 for |<12:00 --:-->xx*
Желе, 22 байта
Не работает на TIO. Заставить Jelly работать на Android с QPython3 также было забавно.
объяснение
источник
Mathematica, 38 байт
объяснение
Выводит переменную тактового сигнала, которая непрерывно переключается от 0 до 1 каждую секунду.
Если переменная часов больше 0,5, выведите «12:00». Если нет, выведите «-: -».
Сделать программу динамической (постоянно обновляемой)
источник
Javascript,
57552 байта сохранены благодаря ETHproductions
источник
setInterval(...,i=500)
:-)Постскриптум
225214Только для удовольствия! Не отправляйте это на настоящий принтер!
Попытайся:
или
тогда
Но не пытайтесь открыть это с более искушенным зрителем и позаботьтесь о настольном миниатюре!
источник
gs -c '...'
командной строке отображается белая страница, возможно, вам придется увеличить окно отображения или использовать меньшее разрешение:gs -r45 -c '...'
или меньший размер бумагиgs -r600 -g360x200 -c '...'
Javascript (в браузере),
17416015912211211110910766 (91) байтЯ сделал это
pre
потому, что использование монотипного шрифта не является частью требования, поэтому мой новый счет - 66 . Некоторые символы добавлены, чтобы использовать моноширинный шрифт, но так как это не нужно, я не буду считать это еще 25 символов.Спасибо ETHproductions за сохранение 14 байтов,
чтобы Kritixi Lithos для сохранения 1 байт,
на работу по экономии
13 байта,к Christoph для сохранения еще два байта и
для себя, чтобы сэкономить 37 байтов, используя
[..][b^=1]
вместоsetTimeout
... и еще 10, заменивfunction(){..}
их двойными кавычками ...... хуже:
От 66 до чего-то большего ...
... но для удовольствия, в духе мигающего дисплея
источник
1000
может стать1e3
window.
;window.setTimeout
так же, какsetTimeout
.tt
короче,pre
а также подразумевает использование моноширинного шрифта. (Просто это встроенный элемент, а не блок, но здесь это не должно иметь значения.)b=document.body.append(a=document.createElement('tt'))
d=document;d.body.append(a=d.createElement('tt'));setInterval("a.innerHTML=++b%2?'12:00':'--:--'",b=500)
сохраняет 5 байтовsetInterval("document.body.innerHTML=++b%2?'12:00':'--:--'",b=500)
только отстает от модного моно-пространства, но занимает всего 66 байтов.QuickBASIC , 167 укусов (вкуснятина)
Я никогда не собирался побеждать. QB не имеет floor (), а также не имеет функции для сна в течение x миллисекунд. Следовательно, это работает путем захвата части ТАЙМЕРА с плавающей запятой (возвращает секунды, прошедшие с полуночи, плюс часть текущей секунды, выраженная в виде двузначного десятичного числа). Затем мы добавляем в него цикл «50 единиц», чтобы определить, когда фаза должна переключиться с «-: -» на «12:00», и используем исходное десятичное число ТАЙМЕРА для переключения с «12:00». на "-: -".
Наконец, даже выполнение этого соответствовало требованиям QB4.5, в DOSBox на довольно мощной машине пропускаются доли. Это потому, что QB на самом деле не достаточно быстр, чтобы выполнить DO-LOOP и оценки внутри MS, в которой мы проводим сравнение. Нужна коробка из БУДУЩЕГО!
В любом случае, теперь я выгляжу на сто, и я порадовал каждого студента Американского университета, так как у них, вероятно, есть ответ на свой курс Comp Sci - так как они все еще учат этому ...
источник
b% = b% - 99
кb%=b%-99
?Clojure,
7962 байтаV2
-17 байт, переходя от ужасного цикла индексации к циклу по бесконечному списку.
Создает бесконечный список
"12:00"
и"--:--"
повторяет его снова и снова, затем используетdoseq
для постоянного извлечения следующего сообщения и его печати.V1
Я не мог придумать хороший способ сжать константы «12:00» и «-: -», поэтому мне пришлось просто жестко их кодировать.
Ungolfed:
источник
Напористый , 22 байта (неконкурентный)
Этот ответ использует два стека, переключаясь между ними, печатая символы по очереди:
Команда
oW
является частью набора экспериментальных команд, которые датируют задание, что делает этот ответ неконкурентным.источник
Windows PowerShell,
4655 байтовОригинальный код:
источник