Tôi có một chiếc đồng hồ báo thức cũ ngu ngốc với hai nút: hourvà minute. Các hournút increments giờ của một báo động thiết lập, và minutegia tăng thời gian phút của một báo động thiết lập. Tuy nhiên, một số nhà thiết kế thông minh nhận ra rằng nhấn cả hai nút cùng một lúc sẽ có ý nghĩa và quyết định rằng nhấn hourvà minuteđồng thời sẽ khiến báo thức được đặt thành 12:00 am
/ 0:00
. Nhiệm vụ của bạn là mô phỏng hành vi này.
Bài tập
Đưa ra thời gian bắt đầu và một chuỗi các trạng thái nút, tìm ra thời gian kết thúc.
Bắt đầu từ thời gian bắt đầu, tăng số giờ cho mỗi lần xuất hiện (1,0)
, tăng số phút cho mỗi lần xuất hiện (0,1)
và đặt thời gian 0:00
cho mỗi lần xuất hiện (1,1)
. Các trạng thái (0,0)
nên được bỏ qua vì chúng tương ứng với không nhấn nút nào.
Khi thêm vào phút và giờ, nếu số phút / giờ vượt quá mức tối đa, hãy đặt nó thành 0
, tức là tăng giá trị phút 59
nên đặt giá trị phút thành 0
và tăng giá trị giờ 23
nên đặt giá trị giờ thành 0
. Việc tăng các giá trị phút / giờ vượt quá giới hạn của chúng không ảnh hưởng đến giá trị khác, ví dụ, tăng số phút 10:59
lợi tức 10:00
, không 11:00
.
Thí dụ
Cho thời gian 13:58
và bước đầu vào [(0,1),(0,1),(0,1),(0,0),(1,1),(1,0)]
,
(0,1)
. Điều này tương ứng với minuteviệc được nhấn. Hiện tại là13:59
.(0,1)
. Điều này tương ứng với minuteviệc được nhấn. Hiện tại là13:00
.(0,1)
. Điều này tương ứng với minuteviệc được nhấn. Hiện tại là13:01
.(0,0)
. Điều này tương ứng với không nhấn nút. Thời gian, không bị ảnh hưởng, bây giờ13:01
(1,1)
. Điều này tương ứng với cả hai nút được nhấn. Hiện tại là0:00
.(1,0)
Điều này tương ứng với hourviệc được nhấn. Hiện tại là1:00
.
Kể từ khi chúng tôi kết thúc 1:00
, nó là đầu ra.
Tôi / O
Đầu vào sẽ bao gồm thời gian và một chuỗi các trạng thái nút. Đầu ra là một lần duy nhất.
Thời gian đầu vào và thời gian đầu ra có thể là
- một tuple 2
(hour, minute)
hoặc(minute, hour)
trong24
thời gian hai giờ như(13, 30)
(hour
phạm vi từ0
đến23
vàminute
phạm vi từ0
đến59
) - giống như trước nhưng trong
12
thời gian-giờ và một Booleanam
/pm
switch (hour
dao động từ0
để11
hay12
và1
đến11
vớiminute
từ0
để59
). - một số phút kể từ
0:00
như 810 (từ 0 đến 1439, bao gồm) - bất kỳ định dạng nào khác mã hóa cùng một thông tin
Chuỗi các trạng thái nút là một đại diện của một danh sách các bộ 2 Boolean, ví dụ:
- một danh sách các bộ dữ liệu:
[(0,1),(1,0),(0,0),(1,1)]
- một chuỗi giới hạn không gian:
"01 10 00 11"
- một chuỗi:
"01100011"
- trong Đệ tứ:
[1,2,0,3]
- chuyển đổi thành một số nguyên:
99
- bất kỳ định dạng nào khác mã hóa cùng một thông tin
Các trường hợp thử nghiệm
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], ...]
?