Eu realmente gosto de momentos que seguem certos padrões. Em particular, gosto de momentos em que todos os dígitos são iguais ou todos os dígitos aumentam aritmeticamente um da esquerda para a direita. Além disso, eu visceralmente odeio quando as pessoas escrevem cartas nos meus tempos, então todo esse absurdo AM / PM está morto para mim. Assim, meus horários favoritos são:
0000 0123 1111 1234 2222 2345
Para a minha paz de espírito, eu preciso de você para me escrever um único programa que, dado o tempo atual como entrada, tanto: (A) se for não agora um dos meus momentos favoritos, diz-me tanto (i) quantos minutos é desde o meu último horário favorito e (ii) quantos minutos a partir de agora meu próximo horário favorito ocorrerá; e (B) se agora é um dos meus momentos favoritos, fornece um único 'valor de sinal'.
Entrada
Seu programa deve aceitar (por qualquer método: argumento da função, argumento da stdin
linha de comando, etc.) a hora atual, em qualquer um dos seguintes formatos:
Um tempo de quatro dígitos como uma sequência
Um número inteiro que pode ser preenchido com zero à esquerda para criar um tempo de quatro dígitos como uma sequência
Uma sequência de quatro (ou menos) números inteiros, ordenada de modo que o primeiro número inteiro na sequência seja o dígito mais à esquerda (significativo) na entrada de tempo (por exemplo,
0951
poderia ser validamente representado como[0, 9, 5, 1]
ou[9, 5, 1]
)- Representar
0000
como uma sequência de comprimento zero é aceitável
- Representar
No caso de uma entrada de sequência, ela deve conter apenas dígitos, sem dois pontos ou outra pontuação. As entradas podem ser consideradas sempre válidas em 24 horas:, HHMM
onde 0 <= HH <= 23
e 0 <= MM <= 59
. Desconsidere a possibilidade de um segundo de salto.
Resultado
Seu programa deve fornecer (retornos de função stdout
, etc. estão bem) (A) ou (B) , conforme apropriado, para determinar se o valor de entrada é ou não um tempo alvo.
Para):
Forneça dois valores numéricos em qualquer formato sensível, como:
Saída de cadeia única com um delimitador adequado
Saídas inteiras / sequência sequenciais, por exemplo,
bash
imprimir duas linhas parastdout
:49 34
Valores de retorno ordenados com comprimento e dois, como uma lista Python, uma matriz C, etc .:
[49, 34]
Os valores podem vir em qualquer ordem. Por exemplo, os dois itens a seguir seriam saídas válidas para uma entrada de 1200
:
49 34
34 49
A ordem e o separador devem ser iguais para todos os valores de entrada!
Para (B):
Produza qualquer resultado inatingível. O mesmo resultado deve ser produzido para todos os seis tempos previstos, no entanto. Loops infinitos são excluídos.
Amostras de entradas / saídas
YAY!!!
é usado aqui como um exemplo demonstrativo e não é prescritivo.
Input Output
------ --------
0000 YAY!!!
0020 20 63
0105 65 18
0122 82 1
0123 YAY!!!
0124 1 587
0852 449 139
1111 YAY!!!
1113 2 81
1200 49 34
1234 YAY!!!
1357 83 505
1759 325 263
1800 326 262
1801 327 261
2222 YAY!!!
2244 22 61
2345 YAY!!!
2351 6 9
Isso é código-golfe , então o código mais curto em bytes vence. As brechas padrão não são permitidas.