Já que estou loucamente louca para o evento Final Fantasy XV Uncovered , quero que você me escreva um programa para me dizer quando é !!!
A entrada
Sua entrada de recebimento na forma de HH:MM XDT
, onde HH
é um número no intervalo 1-12
, MM
é um número entre 0-60
e XDT
é um fuso horário, comX
sendo um de E
(leste, UTC-4), C
(central, UTC-5), P
(pacífico, UTC-7) ou M
(montanha, UTC-6). Este é um tempo assumido como PM. Entradas válidas incluem:
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)
A entrada pode ser considerada válida.
A saída
Seu programa deve fazer o seguinte:
Converta o tempo determinado em PDT e saída
It is XX:XX PM PDT.
, ondeXX:XX
é o tempo convertido. Observe que você não precisa lidar com nenhum caso em que a conversão do tempo cruzasse o limite de AM / PM.Imprima um dos seguintes:
Se o horário convertido for antes das 18:00 PDT, imprima
X minutes until the pre-show!
, substituindoX
pelo número de minutos até 18:00 PDT.Se o horário convertido for posterior ou igual a 18:00 PDT e antes das 19:00 PDT , imprima
Pre-show started X minutes ago; UNCOVERED is starting in Y minutes!
, ondeX
é o número de minutos que passaram desde as 18:00 PDT eY
é o número de minutos até as 19:00 PM PDT.Se o tempo convertido for posterior ou igual a 19:00 PDT , imprima
UNCOVERED started X minutes ago!
, ondeX
é o número de minutos que passaram desde as 19:00 PDT.
Cada sequência impressa deve ser seguida por uma nova linha.
Pontuação
Isso é código de golfe, então o programa mais curto vence.
HH:MM XDT
um erro de digitação? Pode serCST
.2:45 EDT
aparecer assim que nós precisamos para detectar se o tempo convertido é PM ou AM?CST
Foi um erro de digitação, e não haveria tempo que pudesse atravessar a fronteira AM / PM. Editou a postagem.Respostas:
JavaScript (ES6), 257 bytes
fonte
Python (335 bytes)
Resultado:
fonte
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(':')
por.replace(*': ').split()
, salvando 6 bytesLua,
357335332 bytesObrigado a @Katenkyo por cortar 22 bytes.
Golfe:
( Experimente online )
Ungolfed:
fonte
h=h+0
, a adição de 0 converterá automaticamente o resultado em um número. Além disso, én=(...)
obrigatório? não seria melhor incorporar o uso da...
seguinte forma ->h,m,t=(...):match("(%d+):(%d+) (.)")
, você não a reutilizará de qualquer maneira, pois alterará o valor den
usarh
em
:) #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!"
. Pode ser necessário reformular um pouco, mas usar isso economizará muito byte. Para obter informações, a estrutura de um ternário em lua é<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)
é na verdade 329 bytes;).C, 333 bytes
333 bytes após remover as novas linhas desnecessárias (exceto a que está após o #define).
fonte
PHP,
347328327322 bytesvista expandida
Executa como
php script.php HH:MM XDT
. Toma o fuso horário e o fuso horário como$argv
entradas, regexa$argv[1]
para fora$i = [HH, MM]
, determina o fuso horário do primeiro caractere$argv[2]
, calcula quantos minutos depois das 18h PDT, ou seja, o ternárioecho
.Poderia eliminar 2 bytes usando
$u=UNCOVERED
, mas seria o único erro aqui e eu gosto que isso funcione corretamente.fonte
PowerShell 292 bytes
Explicação menos golfe
O literal para "atrás" foi removido no código, mas por enquanto deixado na explicação em caso de outras alterações.
fonte