Ponieważ jestem NAPRAWDĘ zafascynowany wydarzeniem Final Fantasy XV Uncovered , chcę, żebyś napisał mi program, który powie mi, kiedy to nastąpi !!!
Dane wejściowe
Twoje dane wejściowe w postaci HH:MM XDT
, gdzie HH
jest liczbą z zakresu 1-12
, MM
jest liczbą pomiędzy 0-60
i XDT
jest strefą czasową, przy X
czym jest jedną z E
(wschodnia, UTC-4), C
(centralna, UTC-5), P
(pacyficzna, UTC-7) lub M
(góra, UTC-6). Przyjmuje się, że jest to czas PM. Prawidłowe dane wejściowe obejmują:
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)
Dane wejściowe można uznać za prawidłowe.
Wyjście
Twój program musi wykonać następujące czynności:
Przelicz podany czas na PDT i wyjście
It is XX:XX PM PDT.
, gdzieXX:XX
jest przeliczony czas. Pamiętaj, że nie musisz zajmować się żadnym przypadkiem, w którym konwersja czasu przekroczyłaby granicę AM / PM.Wydrukuj jedną z następujących opcji:
Jeśli przeliczony czas przypada przed 18:00 czasu pacyficznego, wydrukuj
X minutes until the pre-show!
, zastępującX
liczbą minut do 18:00 czasu pacyficznego.Jeśli przeliczony czas jest późniejszy lub równy 18:00 PDT i przed 19:00 PDT , wydrukuj
Pre-show started X minutes ago; UNCOVERED is starting in Y minutes!
, gdzieX
jest liczba minut, które upłynęły od 18:00 PDT, iY
liczba minut do 7:00 PM PDT.Jeśli przeliczony czas jest późniejszy lub równy 7:00 PM PDT , wydrukuj
UNCOVERED started X minutes ago!
, gdzieX
jest liczba minut, które upłynęły od 19:00 PDT.
Po każdym wydrukowanym łańcuchu musi następować nowy wiersz.
Punktacja
To jest golf golfowy, więc wygrywa najkrótszy program.
HH:MM XDT
literówka? Może byćCST
.2:45 EDT
się, więc musimy wykryć, czy przeliczony czas to PM czy AM?CST
była literówka i nie pojawi się czas, który mógłby przekroczyć granicę AM / PM. Edytowałem post.Odpowiedzi:
JavaScript (ES6), 257 bajtów
źródło
Python (335 bajtów)
Wynik:
źródło
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(':')
z.replace(*': ').split()
, oszczędzając 6 bajtówLua,
357335332 bajtówDzięki @Katenkyo za odcięcie 22 bajtów.
Gra w golfa:
( Wypróbuj online )
Nie golfowany:
źródło
h=h+0
, dodanie 0 automatycznie zamieni wynik na liczbę. Czy jest równieżn=(...)
obowiązkowy? czy nie lepiej byłoby wstawić użycie...
następującego ->h,m,t=(...):match("(%d+):(%d+) (.)")
, i tak nie użyjesz go ponownie, ponieważ wtedy zmienisz wartośćn
używaniah
im
:)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!"
. Być może trzeba go trochę przerobić, ale użycie tego pozwoli zaoszczędzić wiele bajtów. Dla informacji, struktura trójskładnika w lua jest<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)
tak naprawdę to 329 bajtów;).C, 333 bajty
333 bajty po usunięciu niepotrzebnych znaków nowej linii (wszystkie oprócz tej po #define).
źródło
PHP,
347328327322 bajtówwidok rozstrzelony
Działa jako
php script.php HH:MM XDT
. Uwzględnia strefę czasową i czasową jako$argv
wpisy, wyrazy$argv[1]
do niej$i = [HH, MM]
, określa strefę czasową od pierwszego znaku$argv[2]
, oblicza, ile minut po 18:00 PDT to jest, a następnie potrójnyecho
.Można użyć 2 bajtów przy użyciu
$u=UNCOVERED
, ale byłby to jedyny błąd tutaj i podoba mi się, że działa to czysto.źródło
PowerShell 292 bajtów
Wyjaśnienie dla mniej golfistów
Literał „temu” został usunięty z kodu, ale na razie pozostawiono w wyjaśnieniu w przypadku innych zmian.
źródło