Программа
У вас есть две строки, A и B . A - текущая позиция, в которой находится ваш таймер, а B - позиция, в которой ваш таймер остановится. Обе строки имеют формат m: ss . Вы должны написать программу, которая определяет оставшееся время, которое также должно быть отформатировано как m: ss или mm: ss .
пример
0:00 0:01 -> 0:01
0:55 1:00 -> 0:05
1:45 3:15 -> 1:30
:
как это команда (данные как философия кода). Могу ли я вместо этого использовать пробелы или мне нужно найти другой язык, чтобы ответить на этот вопрос?01:30
действительным выход? (ведущий ноль)Ответы:
Excel, 6 байт
Предполагая, что A находится в ячейке,
A1
а B находится в ячейкеB1
источник
|vy':¡
загрузившись в 05AB1E, я ничего не могу сделать ... Я думаю, что Excel может честно выиграть это, ничто другое автоматически не анализирует тот формат, который я знаю.45:45
A1 и22:22
B1, то23:23:00
MATL ,
177 байтInput представляет собой массив ячеек строк в форме
{'1:45' '3:15'}
или{'1:45', '3:15'}
.Попробуйте онлайн!
объяснение
источник
Bash + coreutils,
4439 байтПопробуйте онлайн!
Объяснение: использование «1:45 3:15» в качестве контрольного примера (последний пример). Я показываю промежуточные шаги в кавычках.
Обратите внимание, что я не проверяю, нуждается ли минутное значение в заполнении нулями, потому что в OP указано, что максимальное значение для
m
9.Ниже мой оригинальный ответ 44 байта, который использовал
date
команду, чтобы преобразовать общее время, оставшееся в секундах, вm:ss
формат.источник
Python 2,
90878380 байтПринимает участие как
"2:45","5:01"
.Попробуйте онлайн
источник
a,b=[60*int(s[-5:-3])+int(s[-2:])for s in input()]
print'%d:%02d'%divmod(b-a,60)
:)с, 86
Читает разделенные пробелами времена из STDIN.
Попробуйте онлайн .
источник
Пакетная, 74 байта
Замена
:
во времени*60+1
преобразует его в выражение, которое вычисляет количество секунд. Batch интерпретирует начальные нули как восьмеричные, поэтому я добавляю a1
к секундам, чтобы обеспечить десятичное преобразование; к счастью, эти двое1
отменяют.источник
C
112100 байтСпасибо @betseg за сохранение 11 байтов и спасибо @Johan du Toit за сохранение одного байта!
Попробуйте онлайн!
источник
%s%d
с%02d
и удалить?:
. Попробуйте онлайн!scanf()
Ваш друг для чтения нескольких целых чисел.MySQL,
1322 байтаожидает времена в
A
иB
.источник
Утилиты Bash + GNU, 43
Попробуйте онлайн .
объяснение
Обратите внимание, что
dc
выражение делится на 60, потому чтоdate
читает входные данные как H: MM вместо M: SS.источник
ECMAScript 6,
999185 байтОдна линия:
Слегка отформатированный:
Я чувствую, что там может быть некоторая экономия ... но я не вижу их в настоящее время.
Редактировать - отличные предложения в комментариях.
источник
s
.s.split(":")
, вы можете использовать новую синтаксис:s.split<backtick>:<backtick>
.PHP,
5553 байтапринимает входные данные из аргументов командной строки
источник
<?=date('i:s',($x=strtotime)($argv[2])-$x($argv[1]));
C #, 72 байта
Принимает ввод как строки.
b="3:15"
a="1:45"
,Объяснение:
Поскольку
DateTime.Parse()
возвращает дату вhh:mm:ss
формате, я могу проанализировать результат в строку, используя+""
, а затем обрезать трейлинг:00
.Это работает,
hh:mm
потому что есть 60 секунд в минуту и 60 минут в час.0:01
0:00
возвращается0:01
1:00
0:55
возвращается0:05
3:15
1:45
возвращается1:30
источник
DateTime.Parse()
входные данные принимаются, например,1:45
какhh:mm
и нетmm:ss
, что приводит к следующему выводу для A1:45
и B3:15
-[01:30:00]
(hh:mm:ss
) ( даже сCultureInfo.InvariantCulture
указанным ). Возможно, вам придется добавить"0:" + a/b
при разборе.:00
.;
в конце, вы можете использовать карри, т. Е.a=>b=>
Вам нужно полностью квалифицироватьDateTime
или включитьusing System;
.Ребол, 5 байт
При условии, что я не пропустил никаких правил ..
Rebol имеет встроенную арифметику для ряда литеральных типов данных. Это также относится к его потомкам, таким как красный
источник
Pyth,
47454440 байтПринимает ввод, разделенный символами новой строки.
У Пифа не было времени, встроенного для этого. Я пробовал некоторые причудливые eval () вещи, но, очевидно, Pyth не может оценивать вещи с
*
какими-либо ведущими нулями. Это стало намного дольше, чем я надеялся. Довольно много байтов расходуется на добавление начального нуля к выводу. По крайней мере, я ниже, чем Bash. Добавлю объяснение, если спросят.Попробуй это!
альтернативное решение, 48 байт
источник
Haskell,
9812786 байтПопробуйте онлайн!
Но мне интересно, есть ли некоторые библиотечные функции для этого
РЕДАКТИРОВАТЬ: Удален импорт, также исправлена ошибка, когда он показывал m: s вместо m: ss
Также, хорошо отформатированная версия:
РЕДАКТИРОВАТЬ 2: Гольф от (30?) Байтов благодаря Laikoni! Также играли в гольф некоторые другие разные. байт.
источник
T-SQL, 238 байт
Использование:
Увидев пример PostGres ранее, я понял, что не видел много попыток игры в гольф в SQL, поэтому я попробовал это сделать в T-SQL. Теперь я знаю, почему вы не видите много игры в гольф в SQL: D
источник
CJam ,
343325 байтовСохранено 8 байтов благодаря Мартину Эндеру!
Попробуйте онлайн!
объяснение
источник
T-SQL, 82 байта
источник
Python, 160 байт
Я все еще новичок в коде гольф, поэтому, если у кого-то есть какие-либо предложения, я был бы признателен.
источник
raw_input()
.REXX, 79 байтов
источник
Пиф, 28
Попробуй это .
объяснение
источник
Java 7, 164 байта
Объяснение:
Тестовый код:
Попробуй это здесь.
Выход:
источник
TXR Lisp, 101 байт
Сгущенное:
(awk(:let(s"%M:%S"))((mf(time-parse s))(prn(time-string-local(-[f 1].(time-utc)[f 0].(time-utc))s))))
источник
Рубин , 91 байт
Попробуйте онлайн!
Принимает данные из аргументов командной строки.
Призвание:
Пример:
Выход:
источник
PowerShell 47 байт
Простая математика временного интервала и строка с часами и секундами.
источник
JavaScript, 88 байт
Попробуйте онлайн!
Объяснение:
Разбивает входы на двоеточие
Преобразует строку в int
Получает минутное значение
Получает второе значение
Возвращает строку минуты: секунды
источник