Так как я БЕЗУМНО раскручен для события Final Fantasy XV Uncovered , я хочу, чтобы вы написали мне программу, которая сообщит мне, когда это произойдет !!!
Вход
Ваш вклад принимают в форме HH:MM XDT
, где HH
представляет собой число в диапазоне 1-12
, MM
это число между 0-60
, и XDT
это временная зона, с X
быть одним из E
(восточная, UTC-4), C
(центральный, UTC-5), P
(тихоокеанский, UTC-7) или M
(гора, UTC-6). Это время принято считать PM. Допустимые входные данные включают в себя:
1:00 EDT (1 PM Eastern Daylight Time)
4:05 MDT (4:05 PM Mountain Daylight Time)
12:23 PDT (12:23 PM Pacific Daylight Time)
1:10 CDT (1:10 PM Central Daylight Time)
Ввод можно считать действительным.
Выход
Ваша программа должна делать следующее:
Преобразовать данное время в PDT и вывести
It is XX:XX PM PDT.
, гдеXX:XX
это преобразованное время. Обратите внимание, что вы не нужно обрабатывать случаи, когда преобразование времени пересекает границу AM / PM.Напечатайте одно из следующего:
Если преобразованное время - до 18:00 по тихоокеанскому времени, напечатайте
X minutes until the pre-show!
, заменивX
количество минут до 18:00 по тихоокеанскому времени.Если преобразованное время равно или равно 6:00 вечера по тихоокеанскому времени и до 7:00 вечера по тихоокеанскому времени , выведите
Pre-show started X minutes ago; UNCOVERED is starting in Y minutes!
, гдеX
число минут, прошедших с 18:00 по тихоокеанскому времени, иY
число минут до 7:00. PM PDT.Если преобразованное время больше или равно 7:00 вечера по тихоокеанскому времени , выведите
UNCOVERED started X minutes ago!
, гдеX
число минут, прошедших с 7:00 вечера по тихоокеанскому времени.
За каждой напечатанной строкой должна следовать новая строка .
счет
Это код гольф, поэтому выигрывает самая короткая программа.
HH:MM XDT
опечатка? Это может бытьCST
.2:45 EDT
так, что нам нужно определить, является ли преобразованное время PM или AM?CST
была опечатка, и не было времени, которое могло бы пересечь границу AM / PM. Отредактировал пост.Ответы:
JavaScript (ES6), 257 байт
источник
Python (335 байт)
Вывод:
источник
t=raw_input().replace(' ',':').split(':');x='PMCE'.index(t[2][0]);t[0]=int(t[0])+x;t[2]='PDT';print'%s:%s PM %s'%tuple(t);x=t[0]*60+int(t[1]);print['%s minutes until the pre-show!'%(360-x),'Pre-show started %s minutes ago; UNCOVERED is starting in %s minutes!'%((x-360),(420-x)),'UNCOVERED started %s minutes ago!'%(x-420)][(x>360)+(x>420)]
.replace(' ', ':').split(':')
с.replace(*': ').split()
, сэкономив 6 байтЛуа,
357335332 байтаСпасибо @Katenkyo за обрезку 22 байтов.
Golfed:
( Попробуйте онлайн )
Ungolfed:
источник
h=h+0
, добавление 0 автоматически преобразует результат в число. Кроме того, являетсяn=(...)
обязательным? Не лучше ли включить использование...
следующим образом ->h,m,t=(...):match("(%d+):(%d+) (.)")
, вы все равно не будете его повторно использовать, так как затем измените значениеn
использованияh
иm
:)r=(h<6 and n.." minutes until the pre-show!" )or h<7 and "Pre-show started "..m.." minutes ago; UNCOVERED is starting in "..(n+60).." minutes!" or "UNCOVERED started "..(m+(h-7)*60).." minutes ago!"
. Возможно, придется немного переделать, но использование этого сэкономит много байтов. Для информации, структура тройного в<condition> and <case true, have to be evaluated to true> or <case false, can be anything>
h,m,t=(...):match("(%d+):(%d+) (.)")h=(h-("PMCE"):find(t))%12+1m=m+0print("It is "..h..":"..m.." PM PDT.")a=" minutes"b="UNCOVERED"n=(6-h)*60-m r=(h<6 and n.." minutes until the pre-show!" )or h<7 and"Pre-show started "..m..a.." ago; "..b.." is starting in "..(n+60)..a.."!"or b.." started "..(m+(h-7)*60)..a.." ago!"end print(r)
на самом деле Это 329 байт;).C 333 байта
333 байта после удаления ненужных символов новой строки (все, кроме одного после #define).
источник
PHP,
347328327322 байтав разобранном виде
Работает как
php script.php HH:MM XDT
. Принимает время и часовой пояс как$argv
записи, регулярные выражения$argv[1]
выводит их в$i = [HH, MM]
, определяет часовой пояс, начиная с первого символа$argv[2]
, вычисляет, сколько минут после 6 вечера PDT, то есть троичныхecho
.Можно было бы сбросить 2 байта с помощью
$u=UNCOVERED
, но это будет единственной ошибкой, и мне нравится, что это работает чисто.источник
PowerShell 292 байта
Меньше Гольф Объяснение
Литерал «назад» был удален в коде, но пока оставлен в объяснении в случае других изменений.
источник