Realmente me gustan los tiempos que siguen ciertos patrones. En particular, me gustan los momentos en que todos los dígitos son iguales, o todos los dígitos aumentan aritméticamente en uno de izquierda a derecha. Además, odio visceralmente cuando la gente pone cartas en mis tiempos, así que todas esas tonterías de AM / PM están muertas para mí. Por lo tanto, mis momentos favoritos son:
0000 0123 1111 1234 2222 2345
Para mi tranquilidad, necesito que me escriba un solo programa que, dada la hora actual como entrada, ambos: (A) si ahora no es uno de mis momentos favoritos, me diga a ambos (i) cuántos minutos son pasado desde mi último tiempo favorito y (ii) cuántos minutos a partir de ahora ocurrirá mi próximo tiempo favorito; y (B) si ahora es uno de mis momentos favoritos, proporciona un solo 'valor de señal'.
Entrada
Su programa debe aceptar (por cualquier método: argumento de función, stdin
línea de comando, etc.) la hora actual, en cualquiera de los siguientes formatos:
Un tiempo de cuatro dígitos como una cadena
Un entero que se puede rellenar con ceros a la izquierda para hacer un tiempo de cuatro dígitos como una cadena
Una secuencia de cuatro (o menos) enteros, ordenados de modo que el primer entero de la secuencia sea el dígito más a la izquierda (significativo) en la entrada de tiempo (por ejemplo,
0951
podría representarse válidamente como[0, 9, 5, 1]
o[9, 5, 1]
)- Representar
0000
como una secuencia de longitud cero es aceptable
- Representar
En el caso de una entrada de cadena, se debe solamente contener dígitos, no hay dos puntos u otra puntuacion. Se puede suponer que las entradas siempre son válidas 24 horas:, HHMM
donde 0 <= HH <= 23
y 0 <= MM <= 59
. Haga caso omiso de la posibilidad de un segundo salto.
Salida
Su programa debe suministrar (los retornos de funciones stdout
, etc. están todos bien) ya sea (A) o (B) , según corresponda, ya sea que el valor de entrada sea o no un tiempo objetivo.
Para):
Proporcione dos valores numéricos en cualquier formato sensible, como:
Salida de cadena única con un delimitador adecuado
Entero secuencial / salidas de cadena, por ejemplo,
bash
imprimir dos líneas parastdout
:49 34
Valores de retorno ordenados de longitud dos, como una lista de Python, una matriz C, etc.
[49, 34]
Los valores pueden venir en cualquier orden. Por ejemplo, los dos siguientes serían salidas válidas para una entrada de 1200
:
49 34
34 49
¡Sin embargo, el orden y el separador deben ser los mismos para todos los valores de entrada!
Para (B):
Produzca cualquier resultado inalcanzable. Lo mismo resultado se debe producir para los seis de los tiempos objetivo, sin embargo. Se excluyen los bucles infinitos.
Entradas / salidas de muestra
YAY!!!
se usa aquí como ejemplo demostrativo y no es prescriptivo.
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
Este es el código de golf , por lo que gana el código más corto en bytes. Las lagunas estándar no están permitidas.