Sorprendentemente, questo semplice compito non sembra esistere già, quindi ...
Il tuo compito è quello di scrivere un programma che accetta come input un'ora di 12 ore e lo converte in "ora militare", o formato di 24 ore.
L'input sarà nella forma:
HH:MM am/pm
Sebbene siano consentite lievi variazioni:
Lo spazio che separa le am / pm dal resto del tempo è facoltativo.
L'ultima parte può essere "am" / "pm" o "a" / "p".
Qualsiasi capitalizzazione va bene.
L'output sarà il tempo immesso, trasformato in formato 24 ore. Può essere un numero o una stringa.
Sia per l'input che per l'output:
Gli 0 in primo luogo sono opzionali. Gli 0 negli ultimi 3 posti sono obbligatori.
il delimitatore che separa ore e minuti può essere un ":", "" (uno spazio) o niente.
Altre note:
La mezzanotte può essere espressa come 0000 o 2400.
La mezzanotte sarà considerata "am", mentre il mezzogiorno sarà considerato "pm".
Il programma può essere una funzione o un programma completo e dovrebbe restituire il risultato o inviarlo allo stdout. Lo spazio bianco finale è ok.
Esempi (non è necessario supportare tutti i formati):
12:00am -> 0000
1200 pm -> 1200
1234Am -> 00:34
134a -> 134
01:34PM -> 13 34
1234pm -> 1234
Questo è il codice golf, quindi vince il minor numero di byte. Dato che è così banale da risolvere usando un built-in, sarebbe bello vedere del codice che risolve manualmente questo problema (ma l'uso dei built-in va bene).
Solo per chiarire, non è necessario supportare tutti i formati possibili. Supportare solo un singolo input e un singolo formato di output (a scelta) va bene. Vorrei tuttavia limitare il formato come indicato sopra (che è già abbastanza gratuito). {1134,'pm'}
, ad esempio, sarebbe inaccettabile.
01:54pm
funzionerebbe, ma 1:54pm
no?