ในวันปู่ย่าตายายของคุณการหมุนหมายเลขโทรศัพท์ทำได้ด้วยการหมุนหน้าปัดเช่นนี้:
หากต้องการหมุนแต่ละหลักให้วางนิ้วของคุณในช่องที่เกี่ยวข้องดึงไปที่จุดหยุดนิ้วแล้วปล่อย กลไกจะทำให้หมุนหมุนกลับไปยังตำแหน่งพักและโทรศัพท์จะตัดการเชื่อมต่อและเชื่อมต่อวงจรตามจำนวนครั้งที่กำหนดทำให้มีเสียงคลิก
โทรหลักNต้องไม่มี “พัลส์” เช่นยกเว้น N = 0 ซึ่งเป็นพัลส์ที่สิบ
โทรศัพท์แบบหมุนมีคุณสมบัติที่ตัวเลขขนาดใหญ่ (8, 9, 0) ใช้เวลาในการโทรนานกว่าตัวเลขขนาดเล็ก (1, 2, 3) นี่คือการพิจารณาที่สำคัญในการวาดแผนที่รหัสพื้นที่ในช่วงต้นและทำไมมหานครนิวยอร์กที่มีประชากรหนาแน่น (และสายโทรศัพท์) มีความหนาแน่น212 (เพียง 5 พัลส์) ในขณะที่907 (26 พัลส์) ไปที่อะแลสกา แน่นอนว่าทั้งหมดนี้ไม่เกี่ยวข้องเมื่อการโทรออกด้วยระบบสัมผัสกลายเป็นที่นิยม
ความท้าทาย
เขียนเป็นสองสามไบต์เป็นไปได้โปรแกรมหรือฟังก์ชั่นที่ใช้เป็นสายอักขระ (หรือลำดับของตัวอักษร) ที่มีหมายเลขโทรศัพท์และส่งออกจำนวนพัลส์หมุนหน้าปัด สิ่งเหล่านี้จะถูกนับดังนี้:
ตัวเลข
- ตัวเลข 1-9 จะนับเป็นจำนวนพัลส์นั้น
- หลัก 0 นับเป็น 10 พัลส์
จดหมาย
โปรดทราบว่าตัวเลข 2-9 บนหน้าปัดมีตัวอักษรของตัวอักษรละตินที่เกี่ยวข้อง เหล่านี้เดิมทีตั้งใจสำหรับการแลกเปลี่ยนชื่อแต่หลังใหม่ที่เหมาะสมสำหรับphonewordsและสำหรับข้อความระบบการป้อนข้อความ
คุณต้องสนับสนุนการมีตัวอักษรในหมายเลขโทรศัพท์ของคุณโดยใช้E.161 การกำหนดตัวอักษรเป็นตัวเลข:
- 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
คุณอาจสันนิษฐานว่าอินพุตได้รับการแบ่งเป็นตัวพิมพ์เล็กและตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก
ตัวละครอื่น ๆ
คุณต้องอนุญาตให้ใช้อักขระ()+-./
และช่องว่างโดยพลการเพื่อจัดรูปแบบตัวคั่น คุณอาจเลือกที่จะช่วยให้การใด ๆของตัวละครที่ไม่ใช่ตัวเลขเพื่อการนี้ถ้ามันง่ายต่อการใช้
อักขระเหล่านี้ไม่ได้มีส่วนช่วยนับจำนวนพัลส์
รหัสตัวอย่าง
ตารางค้นหาและฟังก์ชั่นที่ไม่ใช่กอล์ฟใน 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)
ตัวอย่างอินพุทและเอาท์พุท
911
→ 11867-5309
→ 48713 555 0123
→ 42+1 (212) PE6-5000
→ 571-800-FLOWERS
→ 69PUZZLES
→ 48
*
และจงใจ#
ซึ่งมีความหมายพิเศษบนโทรศัพท์แบบกดปุ่มและไม่สามารถหมุนได้ใน rotaries
+- ()*#.
) เช่นเดียวกับตัวอักษรที่ถูก จำกัด ให้เป็นตัวพิมพ์ใหญ่ ช่วยแก้ให้ด้วยนะถ้าฉันผิด.