Mô tả bài toán
Cho giờ h và phút m. Hãy hiển thị thời gian dưới dạng văn bản tiếng Anh theo quy tắc:
8:00->"eight o' clock"8:01->"one minute past eight"8:10->"ten minutes past eight"8:15->"quarter past eight"8:30->"half past eight"8:40->"twenty minutes to nine"8:45->"quarter to nine"8:47->"thirteen minutes to nine"
Ví dụ
Nếu đầu vào là h = 9, m = 42, thì đầu ra sẽ là "eighteen minutes to ten".
Giải thuật
- Tạo danh sách
textchứa từ vựng cho các số từ 1 đến 30 (bao gồm "quarter", "half"). - Xử lý các trường hợp đặc biệt:
m = 0,m = 1,m = 15,m = 30,m = 45. - Nếu
m < 30: dùng "text[m-1] minutes past text[h-1]". - Nếu
m > 30vàm != 45: dùng "text[60-m-1] minutes to text[h]".
Triển khai Python
def solve(h, m):
text = ["one", "two", "three", "four", "five", "six", "seven", "eight",
"nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "quarter",
"sixteen", "seventeen", "eighteen", "nineteen", "twenty",
"twenty-one", "twenty-two", "twenty-three", "twenty-four", "twenty-five",
"twenty-six", "twenty-seven", "twenty-eight", "twenty-nine", "half"]
op = ""
if m == 0:
op = text[h - 1] + " o' clock"
elif m == 30:
op = text[m - 1] + " past " + text[h - 1]
elif m == 1:
op = text[m - 1] + " minute past " + text[h - 1]
elif m == 15:
op = text[m - 1] + " past " + text[h - 1]
elif m < 30:
op = text[m - 1] + " minutes past " + text[h - 1]
elif m == 45:
op = "quarter to " + text[h]
else:
op = text[(60 - m) - 1] + " minutes to " + text[h]
return op
h = 9
m = 42
print(solve(h, m))
Đầu vào
9, 42
Đầu ra
eighteen minutes to ten