Da ich für das Final Fantasy XV Uncovered-Event Wahnsinnig hochgespielt bin, möchte ich dich mir ein Programm schreiben, das mir sagt, wann es ist !!!
Die Eingabe
Ihr nehmen Eingabe in Form von HH:MM XDT
, in der HH
eine Zahl in dem Bereich liegt 1-12
, MM
ist eine Zahl zwischen 0-60
, und XDT
eine Zeitzone, die mit X
einem zu sein E
(Eastern, UTC-4), C
(Zentral, UTC-5), P
(Pacific, UTC-7) oder M
(Berg, UTC-6). Dies ist eine Zeit, die als PM angenommen wird. Gültige Eingaben sind:
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)
Die Eingabe kann als gültig angenommen werden.
Die Ausgabe
Ihr Programm muss Folgendes tun:
Konvertieren Sie die angegebene Zeit in PDT und geben Sie sie aus
It is XX:XX PM PDT.
, wobeiXX:XX
die konvertierte Zeit ist. Beachten Sie, dass Sie nicht jeden Fall behandeln müssen , wo die Zeit Umwandlung der AM / PM - Grenze würde überqueren.Drucken Sie eine der folgenden Angaben:
Wenn die konvertierte Zeit vor 18:00 Uhr PDT liegt, drucken Sie
X minutes until the pre-show!
und ersetzen Sie sieX
durch die Anzahl der Minuten bis 18:00 Uhr PDT.Wenn die konvertierte Zeit nach oder gleich 18:00 Uhr PDT und vor 19:00 Uhr PDT liegt , drucken Sie
Pre-show started X minutes ago; UNCOVERED is starting in Y minutes!
, wobeiX
die Anzahl der Minuten seit 18:00 Uhr PDT undY
die Anzahl der Minuten bis 19:00 Uhr angegeben ist PM PDT.Wenn die konvertierte Zeit nach oder gleich 19:00 Uhr PDT liegt , drucken Sie
UNCOVERED started X minutes ago!
, wobeiX
die Anzahl der Minuten angegeben ist, die seit 19:00 Uhr PDT vergangen sind.
Auf jede gedruckte Zeichenfolge muss eine neue Zeile folgen.
Wertung
Dies ist Code Golf, also gewinnt das kürzeste Programm.
HH:MM XDT
ein Tippfehler? Es kann seinCST
.2:45 EDT
erscheinen so müssen wir erkennen , ob die umgewandelte Zeit ist PM oder AM?CST
war ein Tippfehler, und es würde keine Zeit erscheinen, die die AM / PM-Grenze überschreiten könnte. Den Beitrag bearbeitet.Antworten:
JavaScript (ES6), 257 Byte
quelle
Python (335 Bytes)
Ausgabe:
quelle
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(':')
mit.replace(*': ').split()
, Speichern 6 BytesLua,
357335332 BytesVielen Dank an @Katenkyo für das Abhacken von 22 Bytes.
Golf:
( Probieren Sie es online aus )
Ungolfed:
quelle
h=h+0
, dass durch Hinzufügen von 0 das Ergebnis automatisch in eine Nummer konvertiert wird. Auch istn=(...)
obligatorisch? Wäre es nicht besser, die Verwendung von...
wie folgt zu integrieren ->h,m,t=(...):match("(%d+):(%d+) (.)")
, Sie werden sie sowieso nicht wiederverwenden, da Sie dann den Wert vonn
usingh
undm
:)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!"
. Möglicherweise muss es ein wenig überarbeitet werden, aber wenn Sie dies verwenden, sparen Sie viel Byte. Zur Information, die Struktur eines<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)
tatsächlich 329 Bytes sind;).C 333 Bytes
333 Bytes nach dem Entfernen der unnötigen Zeilenumbrüche (alle außer dem nach #define).
quelle
PHP,
347328327322 BytesExplosionszeichnung
Läuft als
php script.php HH:MM XDT
. Nimmt die Zeit und die Zeitzone als$argv
Einträge auf, regexiert$argv[1]
in$i = [HH, MM]
, bestimmt die Zeitzone ab dem ersten Zeichen in$argv[2]
, berechnet, wie viele Minuten nach 18:00 Uhr PDT das sind, und ternärisiert dann dieecho
.Könnte 2 Bytes mit löschen
$u=UNCOVERED
, aber es wäre der einzige Fehler hier und ich mag, dass dies sauber funktioniert.quelle
PowerShell 292 Bytes
Weniger Golf Erklärung
Das Literal für "vor" wurde im Code entfernt, aber im Falle anderer Änderungen vorerst zur Erläuterung belassen.
quelle