Vào thời ông bà của bạn, quay số điện thoại đã được thực hiện với một quay số như thế này:
Để quay số từng chữ số, đặt ngón tay của bạn vào lỗ tương ứng, kéo nó đến điểm dừng ngón tay và thả ra. Một cơ chế sẽ làm cho mặt số quay trở lại vị trí nghỉ và điện thoại sẽ ngắt kết nối và kết nối lại một mạch với số lần chỉ định, thực hiện các lần nhấp có thể nghe được.
Quay số chữ số N yêu cầu N xung xung như vậy, ngoại trừ N = 0 là mười xung.
Điện thoại quay có đặc tính là các chữ số lớn (8, 9, 0) mất nhiều thời gian để quay số hơn các chữ số nhỏ (1, 2, 3). Đây là một cân nhắc quan trọng trong việc vẽ lên các bản đồ mã vùng sớm, và tại sao Thành phố New York với mật độ dân số (và đường dây điện thoại) dày đặc của nó có được 212 (chỉ 5 xung), trong khi 907 (26 xung) đã đến Alaska. Tất nhiên, tất cả điều này trở nên không liên quan khi quay số bằng giọng nói cảm ứng trở nên phổ biến.
Các thách thức
Viết, càng ít byte càng tốt, một chương trình hoặc hàm lấy đầu vào là một chuỗi (hoặc chuỗi ký tự) có chứa số điện thoại và xuất ra số xung quay số của nó. Chúng được tính như sau:
Chữ số
- Chữ số 1-9 được tính là số xung đó.
- Chữ số 0 được tính là 10 xung.
Bức thư
Lưu ý rằng các chữ số 2-9 trên mặt số có các chữ cái của bảng chữ cái Latinh được liên kết với chúng. Chúng ban đầu được dự định cho các trao đổi được đặt tên , nhưng sau đó được chiếm lại cho các phonewords và cho các hệ thống nhập tin nhắn văn bản.
Bạn phải hỗ trợ có các chữ cái trong số điện thoại của mình, sử dụng phép gán chữ cái E.161 cho các chữ số:
- A, B, C = 2
- D, E, F = 3
- G, H, I = 4
- J, K, L = 5
- M, N, O = 6
- P, Q, R, S = 7
- T, U, V = 8
- W, X, Y, Z = 9
Bạn có thể giả sử rằng đầu vào đã được gấp lại, cho cả chữ hoa hoặc chữ thường.
Nhân vật khác
Bạn phải cho phép sử dụng tùy ý các ký tự ()+-./
và khoảng trắng làm dấu phân cách định dạng. Bạn có thể chọn cho phép bất kỳ ký tự không chữ và số nào cho mục đích này, nếu việc này dễ thực hiện hơn.
Những ký tự này không đóng góp vào số xung.
Mã ví dụ
Một bảng tra cứu không có chức năng và chức năng trong Python:
PULSES = {
'1': 1,
'2': 2, 'A': 2, 'B': 2, 'C': 2,
'3': 3, 'D': 3, 'E': 3, 'F': 3,
'4': 4, 'G': 4, 'H': 4, 'I': 4,
'5': 5, 'J': 5, 'K': 5, 'L': 5,
'6': 6, 'M': 6, 'N': 6, 'O': 6,
'7': 7, 'P': 7, 'Q': 7, 'R': 7, 'S': 7,
'8': 8, 'T': 8, 'U': 8, 'V': 8,
'9': 9, 'W': 9, 'X': 9, 'Y': 9, 'Z': 9,
'0': 10
}
def pulse_count(phone_num):
return sum(PULSES.get(digit, 0) for digit in phone_num)
Ví dụ đầu vào và đầu ra
911
→ 11867-5309
→ 48713 555 0123
→ 42+1 (212) PE6-5000
→ 571-800-FLOWERS
→ 69PUZZLES
→ 48
*
và #
, có ý nghĩa đặc biệt trên điện thoại cảm ứng và không thể quay số trên các vòng quay.
+- ()*#.
) giống như các chữ cái được giới hạn ở chữ hoa. Sửa lỗi cho tôi nếu tôi sai.