Originalmente publicado (e excluído) pelo @Tlink , que provavelmente foi inspirado nesta pergunta do StackOverflow .
Como foi uma pena que tenha sido excluído, porque parecia um bom desafio em geral, achei que o republicaria com formatação e regras adequadas. (Tentei entrar em contato com o @Tlink e obter sua permissão para publicá-lo, mas ele não responde mais, e foi por isso que decidi publicá-lo agora.
Entrada: seis dígitos.
Saída: a primeira ou a última hora válida no formato de 24 horas ( 00:00:00
até 23:59:59
). (Você pode escolher se quer imprimir a primeira ou a última hora válida.)
Exemplo:
Quando as entradas são 1,8,3,2,6,4
, os seguintes horários podem ser criados:
12:36:48 12:38:46 12:46:38 12:48:36
13:26:48 13:28:46 13:46:28 13:48:26
14:26:38 14:28:36 14:36:28 14:38:26
16:23:48 16:24:38 16:28:34 16:28:43
16:32:48 16:34:28 16:38:24 16:38:42
16:42:38 16:43:28 16:48:23 16:48:32
18:23:46 18:24:36 18:26:34 18:26:43
18:32:46 18:34:26 18:36:24 18:36:42
18:42:36 18:43:26 18:46:23 18:46:32
21:36:48 21:38:46 21:46:38 21:48:36
23:16:48 23:48:16
Portanto, produziremos um 12:36:48
ou 23:48:16
neste caso, sendo o primeiro / o último, respectivamente.
Regras do desafio:
- Indique se você deu a primeira ou a última hora válida na sua resposta.
- A E / S é flexível. A entrada pode ser seis números inteiros separados; uma string contendo os seis dígitos; uma lista / matriz inteira; um único número (possivelmente octal); etc. A saída pode ser uma lista / matriz de dígitos ordenada corretamente; uma String no formato
HH:mm:ss
/HHmmss
/HH mm ss
; todos os dígitos impressos com delimitador de nova linha; etc. Sua ligação. - Você pode pegar os dígitos na ordem que desejar, para que eles já possam ser classificados do menor para o maior ou vice-versa.
- Se não for possível criar um tempo válido com os dígitos fornecidos (ou seja
2,5,5,5,5,5
), deixe-o claro da maneira que desejar. Pode retornarnull
/false
;"Not possible"
; falha com um erro; etc. (Você não pode gerar um horário inválido como55:55:52
, ou outro válido como00:00:00
.) Indique como ele lida com entradas para as quais não é possível criar uma hora válida. - Você não tem permissão para gerar todos os tempos válidos possíveis. Somente os primeiros / os mais recentes devem ser enviados / retornados.
24
por horas (ou seja24:00:00
) ou60
por minutos / segundos (ou seja00:60:60
) não são válidos. Os intervalos são[00-23]
para horas,[00-59]
minutos e segundos.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
Input: Earliest output: Latest output:
1,2,3,4,6,8 12:36:48 23:48:16
2,5,5,5,5,5 None possible None possible
0,0,0,1,1,1 00:01:11 11:10:00
1,1,2,2,3,3 11:22:33 23:32:11
9,9,9,9,9,9 None possible None possible
2,3,5,5,9,9 23:59:59 23:59:59
1,2,3,4,5,6 12:34:56 23:56:41
0,0,0,0,0,0 00:00:00 00:00:00
1,5,5,8,8,8 18:58:58 18:58:58
1,5,5,5,8,8 15:58:58 18:58:55
1,1,1,8,8,8 18:18:18 18:18:18
06:08:60
válido, dado que houve um segundo de salto durante esse minuto?
60
por minutos e segundos não é válido. Intervalos são [00-23]
, [00-59]
e [00-59]
. Esclarecerá isso no desafio.
23:48:16
uma saída válida para o exemplo?