Pronunciando maleficio
Para aquellos de ustedes no iniciados con el programa Silicon Valley, este desafío está inspirado en un intercambio que dice así ( 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.
Cabe señalar que técnicamente, 0x9 * 0xF = 0x87
no 'fleventy-five', pero esto plantea una pregunta importante: ¿cómo se pronunciaría hexadecimal en la conversación? No es como oh ex eff eff
fluir fácilmente de la lengua, entonces, ¿qué debemos hacer? Aquí hay una práctica tabla de pronunciación que seguiremos.
A = ay A0 = atta-
B = bee B0 = bibbity-
C = cee C0 = city-
D = dee D0 = dickety-
E = ee E0 = ebbity-
F = eff F0 = fleventy-
Podemos dividir un número hexadecimal de 4 longitudes en dos grupos de dos y determinar la pronunciación de la tabla anterior, así como la pronunciación común en inglés para los números. Entonces, por ejemplo 0xFFAB
, obtendríamos Fleventy-eff bitey atta-bee
.
Si se incluye un número, como 0xF5AB
, imprimiría Fleventy-five bitey atta-bee
. Además, si un número comienza uno de los grupos, debe usar su pronunciación de "decenas". Por ejemplo, 0x5FAA
se convertiría Fifty-eff bitey atta-ay
. En el caso de que tenga algo así 0x1FAC
, esto sería Effteen bitey atta-cee
. Pero, si esta regla se usara 0x1AF4
, a-teen
podría confundirse eighteen
, por lo que debe anteponer una Y. Entonces, la salida correcta seríaYayteen bitey fleventy-four
En el caso de 0xD0F4
, en lugar de hacerlo Dickety-zero bitey fleventy-four
, ignoraríamos el cero e imprimiríamos Dickety-bitey fleventy-four
.
Los guiones solo deben aparecer dentro de los grupos de dos, es decir, la mordida no debe conectarse a ningún grupo con un guión a menos que el primer grupo sea solo una palabra. Así 0x04F4
sería four-bitey fleventy-four
, pero 0x44F4
sería forty-four bitey fleventy-four
. Como dijo trichoplax , la mordida solo se debe guiar cuando se sigue un número redondo.
Para una visión completa de cómo funcionará esto, consulte el ejemplo de E / S a continuación.
Objetivo
Cree un programa o función que tome una cadena hexadecimal como entrada o un argumento de función y produzca su pronunciación. La salida debe tener una capitalización adecuada. Puede suponer que la longitud de este número siempre será 4.
Ejemplo de E / S
"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"
Este es el código de golf , por lo que gana el menor número de bytes.