Hex aussprechen
Für diejenigen unter Ihnen, die noch nicht mit der Show Silicon Valley begonnen haben, ist diese Herausforderung von einem Austausch inspiriert, der wie folgt abläuft ( YouTube ):
Kid -
Here it is: Bit… soup. It’s like alphabet soup, BUT… it’s ones and zeros
instead of letters.
Erlich Bachman -
{silence}
Kid -
‘Cause it’s binary? You know, binary’s just ones and zeroes.
Erlich Bachman -
Yeah, I know what binary is. Jesus Christ, I memorized the hexadecimal
times tables when I was fourteen writing machine code. Okay? Ask me
what nine times F is. It’s fleventy-five. I don’t need you to tell me what binary is.
Es sollte beachtet werden, dass technisch gesehen 0x9 * 0xF = 0x87
nicht "fünfundvierzig", aber dies wirft eine wichtige Frage auf - wie würden Sie Hex im Gespräch tatsächlich aussprechen? Es ist nicht so oh ex eff eff
, als würde die Zunge leicht abfließen. Was sollen wir also tun? Hier ist eine handliche Aussprache-Tabelle, der wir folgen werden.
A = ay A0 = atta-
B = bee B0 = bibbity-
C = cee C0 = city-
D = dee D0 = dickety-
E = ee E0 = ebbity-
F = eff F0 = fleventy-
Wir können eine Hex-Zahl mit 4 Längen in zwei Zweiergruppen aufteilen und die Aussprache aus der obigen Tabelle sowie die gebräuchliche englische Aussprache für Zahlen bestimmen. So 0xFFAB
würden wir zum Beispiel bekommen Fleventy-eff bitey atta-bee
.
Wenn eine Zahl enthalten ist, wie z. B. 0xF5AB
, würden Sie drucken Fleventy-five bitey atta-bee
. Beginnt eine Zahl mit einer der Gruppen, sollten Sie die Aussprache "Zehn" verwenden. Zum Beispiel 0x5FAA
würde werden Fifty-eff bitey atta-ay
. In dem Fall, in dem Sie so etwas haben 0x1FAC
, wäre dies Effteen bitey atta-cee
. Wenn diese Regel jedoch verwendet wird 0x1AF4
, kann a-teen
dies zu Verwechslungen führen eighteen
, sodass Sie ein Y voranstellen müssen. Die richtige Ausgabe wäre alsoYayteen bitey fleventy-four
Im Fall von 0xD0F4
, anstatt das zu tun Dickety-zero bitey fleventy-four
, würden wir die Null und drucken ignorieren Dickety-bitey fleventy-four
.
Bindestriche sollten nur in Zweiergruppen vorkommen, dh Bitey sollte nicht mit einem Bindestrich mit einer der beiden Gruppen verbunden werden, es sei denn, die erste Gruppe besteht nur aus einem Wort! So 0x04F4
wäre es four-bitey fleventy-four
, aber 0x44F4
wäre es forty-four bitey fleventy-four
. Wie Trichoplax sagte, sollte der Biss nur nach einer runden Zahl getrennt werden.
Um einen umfassenden Überblick über die Funktionsweise zu erhalten, sehen Sie sich das folgende Beispiel für E / A an.
Zielsetzung
Erstellen Sie ein Programm oder eine Funktion , die eine hexadezimale Zeichenfolge als Eingabe oder ein Funktionsargument verwendet, und erstellen Sie die Aussprache. Die Ausgabe muss eine ordnungsgemäße Groß- und Kleinschreibung aufweisen. Sie können davon ausgehen, dass die Länge dieser Nummer immer 4 ist.
Beispiel I / O
"0xFFFF" -> "Fleventy-eff bitey fleventy-eff"
"0x0000" -> "Zero"
"0x0010" -> "Ten"
"0x0100" -> "One-bitey zero"
"0x1110" -> "Eleven-bitey ten"
"0xBEEF" -> "Bibbity-ee bitey ebbity-eff"
"0x9999" -> "Ninety-nine bitey ninety-nine"
"0xA1B2" -> "Atta-one bitey bibbity-two"
"0x3C4F" -> "Thirty-cee bitey forty-eff"
"0x17AB" -> "Seventeen-bitey atta-bee"
"0x1AFB" -> "Yayteen-bitey fleventy-bee"
"0xAAAA" -> "Atta-ay bitey atta-ay"
Das ist Code-Golf , also gewinnt die geringste Anzahl von Bytes.