O desafio é simplista, dado um tempo de entrada como uma string em qualquer um dos seguintes formatos:
hh
, hh:mm
Ou hh:mm:ss
com 0 ≤ hh ≤ 23
, 0 ≤ mm ≤ 59
e 0 ≤ ss ≤ 59
.
Indique a que horas está atualmente usando os seguintes símbolos:
AA LABEL FOR CHARACTER CODE POINT HEXADECIMAL
== ==================== ========== ===========
🕐 Clock Face 01 Oclock 128336 0x1F550
🕑 Clock Face 02 Oclock 128337 0x1F551
🕒 Clock Face 03 Oclock 128338 0x1F552
🕓 Clock Face 04 Oclock 128339 0x1F553
🕔 Clock Face 05 Oclock 128340 0x1F554
🕕 Clock Face 06 Oclock 128341 0x1F555
🕖 Clock Face 07 Oclock 128342 0x1F556
🕗 Clock Face 08 Oclock 128343 0x1F557
🕘 Clock Face 09 Oclock 128344 0x1F558
🕙 Clock Face 10 Oclock 128345 0x1F559
🕚 Clock Face 11 Oclock 128346 0x1F55A
🕛 Clock Face 12 Oclock 128347 0x1F55B
No seguinte formato:
It is currently {Clock Face 1} with {mm} minutes and {ss} seconds until {Clock Face 2}.
Exemplos (incluindo todos os casos adicionais):
Caso com apenas horas ...
f("12") = "It is currently 🕛."
Caso com horas e minutos ...
f("12:30") = "It is currently 🕛 with 30 minutes until 🕐."
Caso com apenas horas, mas com minutos incluídos como 00 ...
f("12:00") = "It is currently 🕛."
Caso com horas, minutos e segundos ...
f("12:30:30") = "It is currently 🕛 with 29 minutes and 30 seconds until 🕐."
Caso com horas e minutos, mas possui segundos incluídos como 00 ...
f("12:30:00") = "It is currently 🕛 with 30 minutes until 🕐."
Caso com horas e minutos, com menos de um minuto até a próxima hora ...
f("12:59:59") = "It is currently 🕛 with 1 seconds until 🕐."
Você não precisa mudar do plural para o singular.
Caso com horas e minutos, com 1 minuto para a próxima hora ...
f("12:59") = "It is currently 🕛 with 1 minutes until 🕐."
Você não precisa mudar do plural para o singular.
Caso usando tempo militar (sim, você deve lidar com isso) ...
f("23:30:30") = "It is currently 🕚 with 29 minutes and 30 seconds until 🕛."
Casos inválidos ...
f("PPCG") = This cannot occur, you are guaranteed a valid format by the definition of the problem.
f(66:66:66) = This cannot occur, you are guaranteed valid numbers by the definition of the problem.
f(24:60:60) = This cannot occur, you are guaranteed valid numbers by the definition of the problem.
Você não precisa estar em conformidade com nenhum estilo de saída para casos inválidos; os erros são aceitáveis.
No geral, o desafio é bastante simplista, mas parecia ser dinâmico o suficiente para ser divertido na minha opinião. O código mais curto aqui é o vencedor, pois não há muito aspecto variável no código que não seja comprimento.
0 < hh < 24
,0 < mm < 60
e0 < ss < 60
, você quis dizer0 ≤ hh ≤ 23
,0 ≤ mm ≤ 59
e0 ≤ ss ≤ 59
.AM
ouPM
marcar?Respostas:
Befunge,
256250 bytesExperimente online!
Os resultados são codificados como utf-8, pois isso funciona melhor com o TIO, mas se você estiver testando localmente, talvez seja necessário ajustar a página de códigos padrão do sistema para ver o relógio corretamente. Caso contrário, apenas redirecione a saída para um arquivo e abra-a em um editor compatível com utf-8.
Explicação
As três primeiras linhas lêem as horas minutos e segundos a partir de stdin, verificando EOF ou um avanço de linha após cada valor e substituindo zeros pelos componentes que estão faltando na entrada. Na linha quatro, ajustamos o valor do minuto se os segundos forem diferentes de zero, convertemos o valor da hora no intervalo de 0 a 11 (para corresponder ao caractere unicode apropriado para cada hora) e escrevemos a parte inicial da saída, incluindo o primeiro relógio.
É nesse ponto que precisamos seguir ramificações diferentes, dependendo de quais componentes são diferentes de zero. O primeiro teste, no início da linha cinco, apenas verifica se os minutos e os segundos são zero. Nesse caso, escrevemos uma final
.
e saímos . Caso contrário, as linhas seis e sete lidam com os casos restantes - escrevendo o texto e os valores apropriados, antes que todos os caminhos sejam combinados novamente na linha cinco para escrever a face final do relógio (executando da direita para a esquerda).fonte
JavaScript (ES6), 201
Menos golfe
Teste
fonte
String
no seu código por""
uma string vazia para economizar 4 bytes :). Ah, merda, ele também pode.It is currently 🕛 with 60 minutes until 🕐
. Eu acho que deveriaIt is currently 🕛.
JavaScript (ES6), 201 bytes
226 bytes se você levar em consideração os plurais:
fonte
PowerShell ,
250243 bytesExperimente online!
fonte
C, 241 bytes
Grava UTF-8 em stdout.
Experimente online!
Código com espaço em branco:
fonte