J'ai un vieux réveil stupide avec deux boutons: houret minute. Le hourbouton incrémente l'heure d'une alarme définie et minuteincrémente l'heure des minutes d'une alarme définie. Cependant, certains designers intelligents réalisé que sur les deux boutons en même temps doit avoir un sens, et a décidé que l' appui houret minuteserait en même temps peuvent déclencher l'alarme être réglée sur 12:00 am
/ 0:00
. Votre tâche consiste à simuler ce comportement.
Tâche
Étant donné une heure de début et une séquence d'états de bouton, déterminez l'heure de fin.
À partir de l'heure de début, incrémentez l'heure pour chaque occurrence de (1,0)
, incrémentez la minute pour chaque occurrence de (0,1)
et réglez l'heure sur 0:00
pour chaque occurrence de (1,1)
. Les états (0,0)
doivent être ignorés car ils ne correspondent à aucun bouton pressé.
Lors de l'ajout aux minutes et aux heures, si la minute / heure dépasse le maximum, réglez-la sur 0
, c'est- à -dire que l'incrémentation d'une valeur de minute de 59
devrait définir la valeur de minute à 0
et l'incrémentation d'une valeur d'heure de 23
devrait définir la valeur de l'heure à 0
. L'incrémentation des valeurs minute / heure au-dessus de leurs limites n'affecte pas l'autre valeur, par exemple l'incrémentation de la minute des 10:59
rendements 10:00
, non 11:00
.
Exemple
Compte tenu du temps 13:58
et des étapes de saisie [(0,1),(0,1),(0,1),(0,0),(1,1),(1,0)]
,
(0,1)
. Cela correspond à minuteune pression. Le moment est venu13:59
.(0,1)
. Cela correspond à minuteune pression. Le moment est venu13:00
.(0,1)
. Cela correspond à minuteune pression. Le moment est venu13:01
.(0,0)
. Cela correspond à aucun bouton pressé. Le temps, inchangé, est maintenant13:01
(1,1)
. Cela correspond à la pression des deux boutons. Le moment est venu0:00
.(1,0)
Cela correspond à hourune pression. Le moment est venu1:00
.
Puisque nous terminons avec 1:00
, c'est la sortie.
E / S
L'entrée consistera en un temps et une séquence d'états de bouton. La sortie est une seule fois.
Le temps d'entrée et le temps de sortie peuvent être
- un temps de 2 tuple
(hour, minute)
ou(minute, hour)
en24
heures tel que(13, 30)
(hour
varie de0
à23
etminute
varie de0
à59
) - identique à l'
12
heure précédente mais en heure et un booléenam
/pm
switch (hour
varie de0
à11
ou12
et1
à11
avecminute
de0
à59
). - un certain nombre de minutes depuis
0:00
comme le 810 (de 0 à 1439 inclus) - tout autre format codant les mêmes informations
La séquence des états des boutons est une représentation d'une liste de 2-tuples booléens, par exemple:
- une liste de tuples:
[(0,1),(1,0),(0,0),(1,1)]
- une chaîne délimitée par des espaces:
"01 10 00 11"
- un string:
"01100011"
- au Quaternaire:
[1,2,0,3]
- converti en entier:
99
- tout autre format codant les mêmes informations
Cas de test
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], ...]
?