¡Ya que estoy locamente entusiasmado por el evento Final Fantasy XV Uncovered , quiero que me escribas un programa para decirme cuándo es!
La entrada
Su entrada de entrada en forma de HH:MM XDT
, donde HH
hay un número en el rango 1-12
, MM
es un número entre 0-60
y XDT
es una zona horaria, X
siendo uno de E
(oriental, UTC-4), C
(central, UTC-5), P
(pacífico, UTC-7), o M
(montaña, UTC-6). Este es un tiempo que se supone PM. Las entradas válidas incluyen:
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)
Se puede suponer que la entrada es válida.
La salida
Su programa debe hacer lo siguiente:
Convierta el tiempo dado a PDT y salida
It is XX:XX PM PDT.
, dondeXX:XX
es el tiempo convertido. Tenga en cuenta que no necesita manejar ningún caso en el que la conversión de la hora cruzaría el límite AM / PM.Imprima uno de los siguientes:
Si el tiempo convertido es antes de las 6:00 p.m. PDT, imprima
X minutes until the pre-show!
y reemplaceX
con el número de minutos hasta las 6:00 p.m. PDT.Si el tiempo convertido es posterior o igual a las 6:00 PM PDT y antes de las 7:00 PM PDT , imprima
Pre-show started X minutes ago; UNCOVERED is starting in Y minutes!
, dondeX
es el número de minutos que han pasado desde las 6:00 PM PDT, yY
es el número de minutos hasta las 7:00 PM PDT.Si el tiempo convertido es posterior o igual a las 7:00 PM PDT , imprima
UNCOVERED started X minutes ago!
, dondeX
es el número de minutos que han pasado desde las 7:00 PM PDT.
Cada cadena impresa debe ir seguida de una nueva línea.
Puntuación
Este es el código de golf, por lo que gana el programa más corto.
HH:MM XDT
un error tipográfico? Puede serCST
.2:45 EDT
Aparecería así que necesitamos detectar si el tiempo convertido es PM o AM?CST
fue un error tipográfico, y no aparecería ningún tiempo que pudiera cruzar el límite AM / PM. Editado el post.Respuestas:
JavaScript (ES6), 257 bytes
fuente
Python (335 bytes)
Salida:
fuente
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(':')
con.replace(*': ').split()
, ahorrando 6 bytesLua,
357335332 bytesGracias a @Katenkyo por cortar 22 bytes.
Golfizado:
( Pruébalo en línea )
Sin golf:
fuente
h=h+0
, la adición de 0 convertirá automáticamente el resultado en un número. Además, ¿esn=(...)
obligatorio? ¿no sería mejor inline el uso de...
la siguiente manera ->h,m,t=(...):match("(%d+):(%d+) (.)")
, no tendrá que volver a utilizar de todos modos, a medida que se cambia el valor den
usoh
ym
:)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!"
. Es posible que deba modificarse un poco, pero usar esto ahorrará mucho byte. Para información, la estructura de un ternario en lua es<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)
realmente es 329 bytes;).C, 333 bytes
333 bytes después de eliminar las nuevas líneas innecesarias (todas menos la que está después de #define).
fuente
PHP,
347328327322 bytesvista en despiece ordenado
Corre como
php script.php HH:MM XDT
. Toma la hora y zona horaria como$argv
entradas, regexes$argv[1]
en$i = [HH, MM]
, determina la zona horaria desde el primer carácter$argv[2]
, calcula cuántos minutos después de las 6PM PDT que es, y luego ternaecho
.Podría eliminar 2 bytes mediante el uso
$u=UNCOVERED
, pero sería el único error aquí y me gusta que esto funcione limpiamente.fuente
PowerShell 292 Bytes
Explicación menos golfizada
El literal para "ago" se eliminó en el código, pero por ahora se dejó en explicación en caso de otros cambios.
fuente