Напишите программу или функцию без ввода, которая печатает или возвращает эту строку 24-часовой и 12-часовой раз:
00:00 12:00am
01:00 1:00am
02:00 2:00am
03:00 3:00am
04:00 4:00am
05:00 5:00am
06:00 6:00am
07:00 7:00am
08:00 8:00am
09:00 9:00am
10:00 10:00am
11:00 11:00am
12:00 12:00pm
13:00 1:00pm
14:00 2:00pm
15:00 3:00pm
16:00 4:00pm
17:00 5:00pm
18:00 6:00pm
19:00 7:00pm
20:00 8:00pm
21:00 9:00pm
22:00 10:00pm
23:00 11:00pm
Строка должна быть выведена именно так, как здесь показано. Единственное исключение состоит в том, что он может иметь один завершающий перевод строки.
Таким образом, хэш MD5 вашего вывода должен быть
827ae6e2dbb1df494930baedb3ee2653
если у вас нет завершающего символа новой строки и
cd4c3d18abee9bafb495f390a919a13f
если вы делаете. (Ваш хэш может отличаться, если ваша система использует другой тип новой строки, но это нормально.)
Самый короткий код в байтах побеждает. Tiebreaker - более ранний ответ.
code-golf
string
kolmogorov-complexity
arithmetic
date
Кальвин Хобби
источник
источник
Ответы:
Bash + coreutils,
4330seq
генерирует целые числа 0-23, по одному на строку.date
интерпретирует каждую строку как дату и время Голых целых чисел достаточно, чтобы их можно было распознать как часы дняdate
.date
затем выводит каждый раз с требуемым форматированием, используя доступные спецификаторы формата времени .Предполагает
LANG=C
локаль, согласно этому мета-ответу .Ideone.
источник
seq 0 23
сохранить и сохранить 7 байтов%H:00
→%R
сохраняет еще 3.%R
вставляет начальный ноль, нежелательный для ОП.Python 2, 66 байт
источник
i=0;exec"print'%02d:00%3d:00%cm'%(i,~-i%12+1,97+i/12*15);i+=1;"*24
код меняется тремя разными способами, но каждое изменение имеет одинаковую длину.C 73 байта
Миллибайт нашел особенно аккуратный способ переписать этот ответ. Благодарность!
источник
?:
?:
на самом деле||
, я думаю , это самый близкий эквивалент Perl . С||
больше похож(a || b) ? 1 : 0
.i++,i%12?:12,"ap"[i/12])
не хватает точки последовательности. Не могу быть уверен, когда этоi++
произойдет. Возможноfor(i=0;i<24;i++) ...i,i%12?:12,"ap"[i/12]...
i++<24
лучше - не добавляет больше байтов в исходный кодMATL,
464234 байтаРанее 42 байта
12tEt:q2M/736330+t15XObZ"!b16XOhhkw14:X~Z)
и 46 байтов,736330 24t:qw/+t15XO' '24TX"b16XOhhk14: 12X~Z)
. Конечно, 736330 не был нужен, это было безумие!Примечание: не работает с TryItOnline, я думаю, что есть проблема совместимости между реализацией Matlab и Octaves
datestr
.datestr
берет числовое представление даты и преобразует его в строковое представление этой даты. Время дня является дробной частью числа, поэтому 0.0 соответствует 0 января 0000, в момент 00:00:00, а 1,0 соответствует 1 января 0000 в 00:00:00. 1/24 это 1:00, 2/24 2:00 и т. Д.объяснение
Чтобы показать это работает в Matlab, вот скриншот
источник
/// , 160 байт
Попробуйте онлайн!
Ungolfed
источник
:00
в качестве замены является один байт больше ... TIO:00
3-байтовая строка появляется 3 раза. 3 × 3 = 9, замена в вашем случае стоит 3 + 1 + 3 = 7, так как он использует 1-байтовый псевдоним, и вы используете его 3 раза, поэтому 7 + 3 = 10. 9 <10, поэтому я не буду его заменять.MarioLANG,
965834 байтаПопробуйте онлайн
ну это было смешно сложно.
Технически выходные данные действительны, но на практике Tio для MarioLANG выводит «n» вместо «n», когда мы печатаем число с помощью «:»
если я найду время, думаю, я попытаюсь сделать (возможно, гораздо более длинную) версию программы, которая правильно выводит данные на Tio.
Пояснение:
наша главная проблема здесь заключается в том, что у нас есть 6 NaN char (newLine, Space,:, a, p, m)
в marioLANG, для печати символов нам нужно их значение ascii:
Итак, первое, что нужно сделать, это установить память:
при этом память выглядит так:
мы преобразуем в р в течение остальной части программы
тогда мы делаем фактический вывод:
источник
Юлия,
88716664 байтаЭто полная программа, которая печатает строку с одним завершающим переводом строки.
Попробуйте онлайн!
Сохранено 5 байтов благодаря Sp3000 и 2 благодаря Деннису!
источник
Функция C #, 100 байт
Безголовая версия:
Console.Write()
занимает слишком много символов!источник
$
делает со строкой?JavaScript (ES2015),
147138137134133 байтаВ этой версии я использовал метод String.repeat (), чтобы избавиться от длинных .slice () и .join () и переместил приращение в цикл.
Предыдущая версия:
Дает вывод с завершающим переводом строки. Проверено в Firefox Scratchpad. Не уверен, что передача аргументов в IIFE в порядке с правилом «без ввода».
Это мое первое представление, так что всем привет! :)
источник
TSQL (SQLServer 2012)
146124121Попробуйте онлайн!
Первая попытка, немного дольше, но в одну строку:
Попробуйте онлайн!
источник
Perl 5, 58
источник
Javascript,
122 байта, 120 байтовРедактировать: Исправлена небольшая ошибка + вывод:
источник
V ,
5653 байтПопробуйте онлайн!
Поскольку это может быть трудно ввести, вот обратимый hexdump:
Версия неконкурирующей тривиальная 2 байта короче , если заменить оба вхождение
G$
сL
, который должен был быть таким же , но был ошибка.Объяснение:
источник
05AB1E ,
5150484442 байтаСохранено два байта благодаря carusocomputing
Код:
Попробуйте онлайн!
объяснение
источник
23Ý
вместо24L<
1 байта. И как долго этоë
существовало? Я чувствую себя так глупо, не зная о других заявлениях в 05AB1E до сих пор.PowerShell v2 +, 76 байт
Циклы от
0..23
и каждый цикл устанавливает строку с-f
оператором. Первый{0:D2}
гарантирует, что мы добавили нули, второй{1,3}
гарантирует, что у нас есть промежуточные пробелы для среднего столбца. В{0}
один соответствует$_
от-f
оператора, в то время как{1}
соответствует псевдо-тройному , что выбирает между$_%12
или на12
основе того ,$_%12
отличен от нуля или нет (то есть, если мы на$_=13
это будет выбрать1
для 1:00 вечера). Затем мы объединяем это с другим псевдо-троичным, который выбирает соответствующийam
/pm
.В отличие от моего ответа в Списке за все время дня с полчаса , на самом деле короче цифры здесь короче, так как мы получаем значительно более дешевый отступ. Вот ответ с использованием функций даты, в 78 байтов
источник
C ++,
8179 байтЭтот код требует
using namespace std
где-то предшествующего ему.Делает цикл со значениями 0 ... 23. Он умножает каждое значение на 3600, преобразует в
tm
структуру и печатает его. Формат печати%R
выводит 24-часовой и минутный; форматы печати%l
и%P
вывод правильных 12-часовых частей; они требуют GNU .Рабочая онлайн версия здесь .
источник
Рубин,
6662 байтаНовая версия
источник
24.times
короче Не нужно места вокругputs
.(i-1)
с~-i
2 байта.JavaScript (ES6),
119116 байтисточник
Скриптинг, 76 байт
Программа предполагает, что ввод пуст (
'0'
или что-то, что преобразуется в целое число0
).Количество байтов предполагает кодировку UTF-16.
Ungolfed:
Каждая итерация цикла оставляет много маленьких строк в стеке; в конце все они автоматически объединяются.
источник
JavaScript,
9795 байтЭто основано на ответе Старкордера . Спасибо Джорджу Риту за улучшение в 2 байта.
Ungolfed:
источник
n < 10
как9 < n
и поменяв местами троичные регистрыПакет, 167 байт
источник
Котлин , 95 байт
Это можно улучшить наверняка.
источник
PHP,
в разобранном виде110107 байтНесколько удивленный, попытался превратить
($i < 10 ? $s : "") . "$i:00"
бит в функцию, но это привело к добавлению ~ 25 символов. Не ходи туда.источник
Swift, 85 байт
источник
String(format: "%02d:00 %2d:00\(x<12 ?"a":"p")m", x, x%12 != 0 ? x%12 : 12)
Функция C, 82 байта
Использование, 94 байта
Ungolfed, 337 байт
это работает на Windows:
Программа C, 85 байт
источник
i=0
для версии функции. А для версии программы вы можете вставить код непосредственно в негоmain
- нет необходимости определять функцию там!i%12==0?12:i%12
->i%12?i%12:12
Foo, 163 байта
Довольно грубый подход; ничего хитрого здесь (я попытался в нескольких местах, но в итоге получилось короче), просто хотел дать Фу шанс. Foo автоматически печатает что-либо в кавычках.
$c10
печатает разрыв строки(## ... )
циклы, пока текущая ячейка не станет равной##
.Немного разгулялся:
Попробуйте онлайн
источник
Javascript (с использованием внешней библиотеки - Enumerable) (107 байт)
Ссылка на библиотеку: https://github.com/mvegh1/Enumerable/
Объяснение кода: создайте массив целых чисел от 0 до 23, для каждой запишите строку в соответствии с предикатом. Этот предикат проверяет, является ли текущий val меньше 10, и дополняет его 0, иначе использует текущий val как есть. Затем добавляет строку минут к нему. Затем, в основном, делается небольшая хитрость, чтобы преобразовать военное в am / pm время и обрабатывает отступы для am / pm раза меньше, чем 10.
источник
SmileBASIC, 73 байта
Кто-то нашел 24-часовую формулу лучше, чем моя старая, которая экономит 3 байта и 5 байтов в другой программе
источник
PHP,
676564 байтаЭто использует кодировку IBM-850.
С не кодированной строкой (66 байт):
Запустите так:
Tweaks
источник
-n
вместо-d error_reporting=30709
. Там не должно быть места доam
/pm
. Сохраните один байт в некодированной версии с физическим переводом строки.ткл, 93
демонстрация
источник