Tengo un viejo y estúpido despertador con dos botones: houry minute. El hourbotón incrementa la hora de una alarma configurada e minuteincrementa los minutos de una alarma configurada. Sin embargo, algunos diseñadores inteligentes se dieron cuenta de que presionar ambos botones al mismo tiempo debería tener un significado, y decidieron que presionar houryminute simultáneamente provocaría que la alarma se configurara en 12:00 am
/0:00
. Su tarea es simular este comportamiento.
Tarea
Dada una hora de inicio y una secuencia de estados de botón, calcule la hora de finalización.
Comenzando desde la hora de inicio, incremente la hora para cada ocurrencia de (1,0)
, incremente el minuto para cada ocurrencia de (0,1)
y configure el tiempo en 0:00
para cada ocurrencia de (1,1)
. Los Estados(0,0)
deben ignorarse porque no corresponden a ninguno de los botones que se presionan.
Al agregar minutos y horas, si el minuto / hora supera el máximo, configúrelo en 0
, es decir, al incrementar el valor de un minuto 59
debería establecer el valor de minuto en 0
y al incrementar el valor de 23
la hora debería establecer el valor de la hora en 0
. Incrementar valores minutos / hora por encima de sus límites no afectan el otro valor, por ejemplo incrementando el minuto de 10:59
rendimientos 10:00
, no 11:00
.
Ejemplo
Dado el tiempo de entrada 13:58
y los pasos [(0,1),(0,1),(0,1),(0,0),(1,1),(1,0)]
,
(0,1)
. Esto corresponde a minuteser presionado. El momento es ahora13:59
.(0,1)
. Esto corresponde a minuteser presionado. El momento es ahora13:00
.(0,1)
. Esto corresponde a minuteser presionado. El momento es ahora13:01
.(0,0)
. Esto corresponde a que no se presione ningún botón. El tiempo, no afectado, es ahora13:01
(1,1)
. Esto corresponde a que se presionen ambos botones. El momento es ahora0:00
.(1,0)
Esto corresponde a hourser presionado. El momento es ahora1:00
.
Como terminamos con 1:00
, es la salida.
I / O
La entrada consistirá en un tiempo y una secuencia de estados de botón. La salida es una sola vez.
El tiempo de entrada y el tiempo de salida pueden ser
- un tiempo de 2 tuplas de
(hour, minute)
o(minute, hour)
dentro de una24
hora como(13, 30)
(hour
rangos de0
a23
yminute
rangos de0
a59
) - igual que el anterior pero en
12
-Hora tiempo y un booleanoam
/pm
interruptor (hour
rangos de0
a11
o12
y1
a11
conminute
de0
a59
). - una cantidad de minutos desde
0:00
810 (de 0 a 1439, inclusive) - cualquier otro formato que codifique la misma información
La secuencia de estados de botón es una representación de una lista de 2 tuplas booleanas, por ejemplo:
- una lista de tuplas:
[(0,1),(1,0),(0,0),(1,1)]
- una cadena delimitada por espacios:
"01 10 00 11"
- una cuerda:
"01100011"
- en cuaternario:
[1,2,0,3]
- convertido a un entero:
99
- cualquier otro formato que codifique la misma información
Casos de prueba
time,steps -> output
06:49,[(0, 1)] -> 06:50
12:23,[(1, 0)] -> 13:23
02:23,[(0, 1), (1, 0)] -> 03:24
21:40,[(0, 1), (0, 1), (0, 1), (0, 1)] -> 21:44
13:10,[(0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (1, 1), (0, 1), (0, 1)] -> 00:02
21:33,[(1, 0), (0, 1), (1, 0), (0, 1)] -> 23:35
14:21,[(0, 1), (0, 1), (0, 1)] -> 14:24
02:39,[(0, 0), (0, 1)] -> 02:40
16:07,[(0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1)] -> 19:16
17:55,[(0, 1), (1, 0), (0, 1)] -> 18:57
15:55,[(1, 0), (1, 0), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (1, 0), (1, 0), (0, 1), (1, 0)] -> 23:00
22:11,[(0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1)] -> 00:19
03:58,[(1, 0), (0, 0), (0, 0), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (0, 1), (1, 0), (0, 1)] -> 07:03
13:02,[(0, 1), (1, 0), (0, 1), (1, 0), (0, 1), (0, 1), (1, 0)] -> 16:06
04:37,[(1, 0), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (1, 0), (0, 1), (1, 0)] -> 08:47
00:01,[(0, 1), (1, 0), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1)] -> 03:08
02:58,[(1, 0), (1, 0), (0, 1)] -> 04:59
01:43,[(0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (1, 0), (0, 1)] -> 04:52
07:54,[(1, 0), (0, 1), (1, 0), (1, 0), (1, 1)] -> 00:00
09:33,[(0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1)] -> 10:38
09:01,[(0, 1), (0, 1)] -> 09:03
19:04,[(0, 1), (1, 0), (0, 1), (1, 0)] -> 21:06
11:17,[(0, 1), (1, 0), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (1, 1), (0, 1), (0, 1)] -> 00:02
19:32,[(0, 1), (1, 0), (0, 1), (1, 0), (1, 0), (1, 0)] -> 23:34
17:31,[(0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (1, 0), (0, 1), (0, 0), (1, 1), (0, 1)] -> 00:01
06:46,[(0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (1, 0), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)] -> 18:16
[[initialHour, initialMinute], [hourPressed1, minuitePressed1], [hourPressed2, minuitePressed2], ...]
?