У меня тупой старый будильник с двумя кнопками: hourи minute. hourКнопка увеличивает час установленной сигнализации, а также minuteприращение минутного время набора сигнала тревоги. Тем не менее, некоторые умные дизайнеры поняли, что нажатие обеих кнопок должно иметь значение, и решили, что нажатие hourи minuteодновременное приведение будильника в положение 12:00 am/ 0:00. Ваша задача - смоделировать это поведение.
задача
Учитывая время начала и последовательность состояний кнопок, определите время окончания.
Начиная со времени начала, увеличивайте час для каждого вхождения (1,0), увеличивайте минуту для каждого вхождения (0,1)и устанавливайте время 0:00для каждого вхождения (1,1). Состояния (0,0)следует игнорировать, поскольку они не соответствуют ни одной из нажатых кнопок.
При добавлении к минутам и часам, если минута / час превышает максимальное значение, установите для него значение 0, т. Е. При увеличении минутного значения 59следует установить минутное значение, 0а при увеличении часового значения часов 23следует установить часовое значение 0. Приращение минуты / час значения выше их пределов не влияет на другое значение, например приращение минуты 10:59урожайности 10:00, а не 11:00.
пример
Учитывая время ввода 13:58и шаги [(0,1),(0,1),(0,1),(0,0),(1,1),(1,0)],
(0,1), Это соответствует minuteнажатию. Время пришло13:59.(0,1), Это соответствует minuteнажатию. Время пришло13:00.(0,1), Это соответствует minuteнажатию. Время пришло13:01.(0,0), Это соответствует ни одной из нажатых кнопок. Время, без изменений, сейчас13:01(1,1), Это соответствует нажатию обеих кнопок. Время пришло0:00.(1,0)Это соответствует hourнажатию. Время пришло1:00.
Так как мы заканчиваем 1:00, это выход.
I / O
Ввод будет состоять из времени и последовательности состояний кнопок. Выход - один раз.
Время ввода и время вывода может быть
- 2-кортеж
(hour, minute)или(minute, hour)в -24часовое времени , например,(13, 30)(hourколеблется от0до23иminuteнаходится в диапазоне от0до59) - такой же, как предыдущий, но в
12через час и логическое значениеam/pmпереключатель (hourнаходится в диапазоне от0до11или12и1к11сminuteс0к59). - количество минут, начиная с
0:00810 (от 0 до 1439 включительно) - любой другой формат, который кодирует ту же информацию
Последовательность состояний кнопок является представлением списка булевых 2-кортежей, например:
- список кортежей:
[(0,1),(1,0),(0,0),(1,1)] - строка, разделенная пробелом:
"01 10 00 11" - строка:
"01100011" - в четвертичный период:
[1,2,0,3] - конвертируется в целое число:
99 - любой другой формат, который кодирует ту же информацию
Тестовые случаи
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], ...]?