Pronuncia esadecimale
Per quelli di voi non iniziati con lo spettacolo Silicon Valley, questa sfida è ispirata da uno scambio che va così ( 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.
Va notato che tecnicamente, 0x9 * 0xF = 0x87
non "fleventy-five", ma ciò solleva una domanda importante: come pronunceresti realmente hex in conversazione? Non è che oh ex eff eff
scorra facilmente dalla lingua, quindi cosa dovremmo fare? Ecco una pratica tabella di pronuncia che seguiremo.
A = ay A0 = atta-
B = bee B0 = bibbity-
C = cee C0 = city-
D = dee D0 = dickety-
E = ee E0 = ebbity-
F = eff F0 = fleventy-
Possiamo dividere un numero esadecimale di 4 lunghezze in due gruppi di due e determinare la pronuncia dalla tabella sopra, così come la pronuncia inglese comune per i numeri. Quindi, per esempio 0xFFAB
, otterremmo Fleventy-eff bitey atta-bee
.
Se viene incluso un numero, ad esempio 0xF5AB
, si stampa Fleventy-five bitey atta-bee
. Inoltre, se un numero avvia uno dei gruppi, è necessario utilizzare la pronuncia "decine". Ad esempio, 0x5FAA
sarebbe diventato Fifty-eff bitey atta-ay
. Nel caso in cui hai qualcosa del genere 0x1FAC
, questo sarebbe Effteen bitey atta-cee
. Ma, se questa regola dovesse essere utilizzata per 0x1AF4
, a-teen
potrebbe essere confusa per eighteen
, quindi è necessario anteporre una Y. Quindi, l'output corretto sarebbeYayteen bitey fleventy-four
Nel caso 0xD0F4
invece di fare Dickety-zero bitey fleventy-four
, ignoreremmo lo zero e stamperemmo Dickety-bitey fleventy-four
.
I trattini dovrebbero apparire solo all'interno dei gruppi di due, cioè il morso non dovrebbe essere collegato ad alcun gruppo con un trattino a meno che il primo gruppo sia solo una parola! Così 0x04F4
sarebbe four-bitey fleventy-four
, ma 0x44F4
sarebbe forty-four bitey fleventy-four
. Come diceva il trichoplax , il morso dovrebbe essere trattato solo dopo aver seguito un numero rotondo.
Per uno sguardo completo su come funzionerà, dai un'occhiata all'esempio I / O di seguito.
Obbiettivo
Crea un programma o una funzione che prenderà una stringa esadecimale come input o un argomento di funzione e produrrà la sua pronuncia. L'output deve avere una corretta capitalizzazione. Puoi presumere che la lunghezza di questo numero sarà sempre 4.
Esempio 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"
Questo è code-golf , quindi vince il numero minimo di byte.