Eu tenho um velho despertador estúpido com dois botões: houre minute. O hourbotão incrementa a hora de um alarme definido e minuteaumenta a hora em minutos de um alarme definido. No entanto, alguns designers inteligentes perceberam que pressionar os dois botões ao mesmo tempo deveria ter um significado e decidiram que pressionar houre minutesimultaneamente faria com que o alarme fosse definido como 12:00 am
/ 0:00
. Sua tarefa é simular esse comportamento.
Tarefa
Dada a hora de início e uma sequência de estados dos botões, calcule a hora de término.
A partir da hora de início, aumente a hora para cada ocorrência de (1,0)
, aumente o minuto para cada ocorrência de (0,1)
e defina a hora 0:00
para cada ocorrência de (1,1)
. Os estados (0,0)
devem ser ignorados porque correspondem a nenhum botão sendo pressionado.
Ao adicionar minutos e horas, se o minuto / hora ultrapassar o máximo, defina-o como 0
, isto é, incrementar um valor minuto de 59
deve definir o valor minuto 0
e incrementar um valor de hora 23
deve definir o valor da hora 0
. Incrementar valores de minuto / hora acima de seus limites não afeta o outro valor, por exemplo, incrementar o minuto de 10:59
rendimentos 10:00
, não 11:00
.
Exemplo
Dado o tempo de entrada 13:58
e as etapas [(0,1),(0,1),(0,1),(0,0),(1,1),(1,0)]
,
(0,1)
. Isso corresponde a minuteser pressionado. A hora é agora13:59
.(0,1)
. Isso corresponde a minuteser pressionado. A hora é agora13:00
.(0,1)
. Isso corresponde a minuteser pressionado. A hora é agora13:01
.(0,0)
. Isso corresponde a nenhum botão sendo pressionado. A hora, não afetada, é agora13:01
(1,1)
. Isso corresponde aos dois botões sendo pressionados. A hora é agora0:00
.(1,0)
Isso corresponde a hourser pressionado. A hora é agora1:00
.
Desde que terminamos 1:00
, é a saída.
I / O
A entrada consistirá em um tempo e uma sequência de estados dos botões. A saída é uma única vez.
O tempo de entrada e o tempo de saída podem ser
- uma tupla de duas horas
(hour, minute)
ou(minute, hour)
em um24
horário, como(13, 30)
(hour
varia de0
a23
eminute
varia de0
a59
) - igual ao tempo anterior, mas em uma
12
hora, e um interruptor booleanoam
/pm
(hour
varia de0
para11
ou para12
e com de para ).1
11
minute
0
59
- alguns minutos desde
0:00
810 (de 0 a 1439, inclusive) - qualquer outro formato que codifique a mesma informação
A sequência dos estados dos botões é uma representação de uma lista de 2 tuplas booleanas, por exemplo:
- uma lista de tuplas:
[(0,1),(1,0),(0,0),(1,1)]
- uma sequência delimitada por espaço:
"01 10 00 11"
- uma linha:
"01100011"
- em Quaternário:
[1,2,0,3]
- convertido em um número inteiro:
99
- qualquer outro formato que codifique a mesma informação
Casos de teste
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], ...]
?