Ich habe einen blöden alten Wecker mit zwei Knöpfen: hourund minute. Die hourTaste erhöht die Stunde eines eingestellten Alarms und minutedie Minutenzeit eines eingestellten Alarms. Einige clevere Designer erkannten jedoch, dass das gleichzeitige Drücken beider Tasten eine Bedeutung haben sollte, und entschieden, dass durch Drücken von hourund minutegleichzeitig der Alarm auf 12:00 am
/ gesetzt wird 0:00
. Ihre Aufgabe ist es, dieses Verhalten zu simulieren.
Aufgabe
Bestimmen Sie bei gegebener Startzeit und einer Folge von Schaltflächenzuständen die Endzeit.
Erhöhen Sie ab der Startzeit die Stunde für jedes Vorkommen von (1,0)
, erhöhen Sie die Minute für jedes Vorkommen von (0,1)
und stellen Sie die Zeit auf 0:00
für jedes Vorkommen von ein (1,1)
. Die Zustände (0,0)
sollten ignoriert werden, da sie keiner gedrückten Taste entsprechen.
Wenn die Minuten und Stunden addiert werden und die Minuten / Stunden das Maximum überschreiten, stellen Sie dies auf 0
ein. Wenn Sie also einen Minutenwert von 59
erhöhen, stellen Sie den Minutenwert auf 0
und einen Stundenwert von 23
erhöhen, stellen Sie den Stundenwert auf ein 0
. Das Erhöhen der Minuten- / Stundenwerte über ihre Grenzen hinaus hat keinen Einfluss auf den anderen Wert, z. B. das Erhöhen der 10:59
Minutenerträge 10:00
, nicht 11:00
.
Beispiel
In Anbetracht der Eingabezeit 13:58
und Schritte [(0,1),(0,1),(0,1),(0,0),(1,1),(1,0)]
,
(0,1)
. Dies entspricht minutedem Drücken. Die Zeit ist jetzt13:59
.(0,1)
. Dies entspricht minutedem Drücken. Die Zeit ist jetzt13:00
.(0,1)
. Dies entspricht minutedem Drücken. Die Zeit ist jetzt13:01
.(0,0)
. Dies entspricht keiner gedrückten Taste. Die Zeit ist jetzt unberührt13:01
(1,1)
. Dies entspricht dem Drücken beider Tasten. Die Zeit ist jetzt0:00
.(1,0)
Dies entspricht hourdem Drücken. Die Zeit ist jetzt1:00
.
Da wir mit enden 1:00
, ist es die Ausgabe.
I / O
Die Eingabe besteht aus einer Zeit und einer Folge von Tastenzuständen. Die Ausgabe erfolgt einmalig.
Die Eingabezeit und die Ausgabezeit können sein
- ein 2-Tupel
(hour, minute)
oder(minute, hour)
in-24
Stunden-Zeit wie(13, 30)
(hour
reicht von0
bis23
undminute
reicht von0
bis59
) - Wie vorher, jedoch in
12
Stunden und mit einem Booleschen Wertam
/pm
Schalter (hour
Bereich von0
bis11
oder12
und1
bis11
mitminute
von0
bis59
). - eine Anzahl von Minuten seit
0:00
wie 810 (von 0 bis einschließlich 1439) - jedes andere Format, das die gleichen Informationen codiert
Die Reihenfolge der Schaltflächenzustände ist eine Darstellung einer Liste von Booleschen 2-Tupeln, zum Beispiel:
- eine Liste von Tupeln:
[(0,1),(1,0),(0,0),(1,1)]
- eine durch Leerzeichen getrennte Zeichenfolge:
"01 10 00 11"
- ein Faden:
"01100011"
- im Quartär:
[1,2,0,3]
- in eine ganze Zahl umgewandelt:
99
- jedes andere Format, das die gleichen Informationen codiert
Testfälle
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], ...]
?