Zu Ihrer Großelternzeit wurde eine Telefonnummer mit einem Drehknopf wie folgt gewählt:
Um jede Ziffer zu wählen, stecken Sie Ihren Finger in das entsprechende Loch, ziehen Sie ihn bis zum Anschlag und lassen Sie ihn los. Ein Mechanismus bewirkt, dass sich der Drehknopf wieder in seine Ruheposition dreht, und das Telefon trennt einen Stromkreis eine festgelegte Anzahl von Malen und verbindet ihn erneut, wobei hörbare Klicks zu hören sind.
Das Wählen der Ziffer N erfordert N solche "Impulse", mit Ausnahme von N = 0, was zehn Impulse sind.
Rotary-Telefone haben die Eigenschaft, dass große Ziffern (8, 9, 0) länger zum Wählen benötigen als kleine Ziffern (1, 2, 3). Dies war eine wichtige Überlegung bei der Erstellung früher Vorwahlkarten, und warum New York City mit seiner hohen Bevölkerungs- (und Telefonleitungs) dichte 212 (nur 5 Impulse) erhielt, während 907 (26 Impulse) in das dünn besiedelte Alaska gingen. Natürlich wurde dies alles irrelevant, als die Tonwahl populär wurde.
Die Herausforderung
Schreiben Sie in so wenigen Bytes wie möglich ein Programm oder eine Funktion, die eine Zeichenfolge (oder eine Folge von Zeichen) mit einer Telefonnummer als Eingabe verwendet und deren Anzahl von Wählimpulsen ausgibt. Diese sind wie folgt zu zählen:
Ziffern
- Die Ziffern 1-9 zählen als die Anzahl der Impulse.
- Ziffer 0 zählt als 10 Impulse.
Briefe
Beachten Sie, dass den Ziffern 2 bis 9 Buchstaben des lateinischen Alphabets zugeordnet sind. Diese waren ursprünglich für benannte Vermittlungsstellen vorgesehen , wurden jedoch für Telefongespräche und SMS-Eingabesysteme neu verwendet.
Sie müssen es unterstützen, Buchstaben in Ihren Telefonnummern zu haben, indem Sie die E.161- Zuordnung von Buchstaben zu Ziffern verwenden:
- 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
Sie können davon ausgehen, dass die Eingabe bereits in Groß- oder Kleinschreibung geschrieben wurde.
Andere Charaktere
Sie müssen die willkürliche Verwendung der Zeichen ()+-./
und Leerzeichen als Formatierungstrennzeichen zulassen . Sie können für diesen Zweck alle nicht-alphanumerischen Zeichen zulassen , wenn dies einfacher zu implementieren ist.
Diese Zeichen tragen nicht zur Impulszahl bei.
Beispielcode
Eine nicht Golf spielende Nachschlagetabelle und Funktion in 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)
Beispiel für Ein- und Ausgabe
911
→ 11867-5309
→ 48713 555 0123
→ 42+1 (212) PE6-5000
→ 571-800-FLOWERS
→ 69PUZZLES
→ 48
*
und #
, die bei Tastentelefonen besondere Bedeutungen haben und bei Drehknöpfen nicht wählbar sind.
+- ()*#.
) verwendet werden, genau wie Buchstaben auf Großbuchstaben beschränkt sind. Korrigiere mich, wenn ich falsch liege.