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:00para 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 59debería establecer el valor de minuto en 0y al incrementar el valor de 23la 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:59rendimientos 10:00, no 11:00.
Ejemplo
Dado el tiempo de entrada 13:58y 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 una24hora como(13, 30)(hourrangos de0a23yminuterangos de0a59) - igual que el anterior pero en
12-Hora tiempo y un booleanoam/pminterruptor (hourrangos de0a11o12y1a11conminutede0a59). - una cantidad de minutos desde
0:00810 (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], ...]?