Di masa kakek nenek Anda, menekan nomor telepon dilakukan dengan tombol putar seperti ini:
Untuk memutar setiap digit, letakkan jari Anda di lubang yang sesuai, tarik ke berhenti jari, dan lepaskan. Suatu mekanisme akan menyebabkan putaran memutar kembali ke posisi istirahatnya, dan telepon akan memutus dan menyambungkan kembali sirkuit beberapa kali, membuat klik terdengar.
Memanggil angka N membutuhkan N "pulsa" seperti itu, kecuali untuk N = 0 yang sepuluh pulsa.
Ponsel rotary memiliki properti yang membutuhkan digit besar (8, 9, 0) lebih lama untuk dial daripada digit kecil (1, 2, 3). Ini adalah pertimbangan penting dalam menyusun peta kode area awal, dan mengapa Kota New York dengan kepadatan populasi (dan saluran telepon) yang padat mendapat 212 (hanya 5 pulsa), sementara 907 (26 pulsa) pergi ke Alaska yang jarang dihuni. Tentu saja, semua ini menjadi tidak relevan ketika panggilan nada sentuh menjadi populer.
Tantangan
Tulis, sesedikit mungkin byte, suatu program atau fungsi yang mengambil input string (atau urutan karakter) yang berisi nomor telepon, dan mengeluarkan jumlah pulsa putaran dial. Ini harus dihitung sebagai berikut:
Digit
- Digit 1-9 dihitung sebagai jumlah pulsa.
- Digit 0 dihitung sebagai 10 pulsa.
Surat
Perhatikan bahwa angka 2-9 pada dial memiliki huruf-huruf alfabet Latin yang terkait dengannya. Ini awalnya dimaksudkan untuk pertukaran bernama , tetapi yang terakhir disesuaikan untuk kata sandi , dan untuk sistem input pesan teks.
Anda harus mendukung memiliki surat di nomor telepon Anda, menggunakan penugasan huruf E.161 untuk digit:
- 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
Anda dapat berasumsi bahwa input telah dilipat dengan huruf besar-kecil, menjadi huruf besar atau kecil.
Karakter lainnya
Anda harus mengizinkan penggunaan karakter ()+-./
dan spasi secara sewenang-wenang sebagai pemformat pemisah. Anda dapat memilih untuk mengizinkan karakter non-alfanumerik apa pun untuk tujuan ini, jika lebih mudah diterapkan.
Karakter-karakter ini tidak berkontribusi pada jumlah pulsa.
Kode contoh
Tabel pencarian dan fungsi non-golf dengan 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)
Contoh input dan output
911
→ 11867-5309
→ 48713 555 0123
→ 42+1 (212) PE6-5000
→ 571-800-FLOWERS
→ 69PUZZLES
→ 48
*
dan #
, yang memiliki arti khusus pada telepon nada-sentuh dan tidak dapat diputar pada rotari.
+- ()*#.
) seperti halnya huruf dibatasi untuk huruf besar. Koreksi saya jika saya salah.