Surpreendentemente, essa tarefa simples parece não existir já, então ...
Sua tarefa é escrever um programa que tenha como entrada um tempo de 12 horas e o converta em "horário militar" ou formato de 24 horas.
A entrada estará no formato:
HH:MM am/pm
Embora pequenas variações sejam permitidas:
O espaço que separa am / pm do restante do tempo é opcional.
A última parte pode ser "am" / "pm" ou "a" / "p".
Qualquer capitalização é boa.
A saída será a hora inserida, transformada em formato de 24 horas. Pode ser um número ou uma string.
Para entrada e saída:
0s em primeiro lugar são opcionais. 0s nos últimos 3 lugares são obrigatórios.
o delimitador que separa horas e minutos pode ser um ":", "" (um espaço) ou nada.
Outras notas:
A meia-noite pode ser expressa como 0000 ou 2400.
A meia-noite será considerada "am", enquanto o meio-dia será considerado "pm".
Seu programa pode ser uma função ou um programa completo e deve retornar o resultado ou enviá-lo para o stdout. O espaço em branco à direita está ok.
Exemplos (você não precisa dar suporte a todos os formatos):
12:00am -> 0000
1200 pm -> 1200
1234Am -> 00:34
134a -> 134
01:34PM -> 13 34
1234pm -> 1234
Isso é código de golfe, então o menor número de bytes vence. Como isso é tão trivial para resolver usando um built-in, seria bom ver algum código que resolve isso manualmente (mas o uso de built-ins é bom).
Apenas para esclarecer, você não precisa oferecer suporte a todos os formatos possíveis. Suportar apenas uma única entrada e um único formato de saída (de sua escolha) é bom. Gostaria, no entanto, de limitar o formato conforme descrito acima (que já é bastante gratuito). {1134,'pm'}
, por exemplo, seria inaceitável.
01:54pm
funcionaria, mas 1:54pm
não?