Pronunciando Hex
Para aqueles que não são iniciantes no programa Vale do Silício, esse desafio é inspirado em uma troca assim ( 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.
Deve-se notar que, tecnicamente, 0x9 * 0xF = 0x87
não 'fleventy-five', mas isso traz uma questão importante - como você realmente pronunciava azar na conversa? Não é como oh ex eff eff
fluir da língua facilmente, então o que devemos fazer? Aqui está um gráfico de pronúncia útil 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 um número hexadecimal de quatro comprimentos em dois grupos de dois e determinar a pronúncia da tabela acima, bem como a pronúncia comum em inglês para números. Então, por exemplo 0xFFAB
, teríamos Fleventy-eff bitey atta-bee
.
Se um número estiver incluído, como 0xF5AB
, você imprimiria Fleventy-five bitey atta-bee
. Além disso, se um número inicia um dos grupos, você deve usar a pronúncia "dezenas". Por exemplo, 0x5FAA
se tornaria Fifty-eff bitey atta-ay
. No caso em que você tem algo parecido 0x1FAC
, isso seria Effteen bitey atta-cee
. Porém, se essa regra fosse usada 0x1AF4
, a-teen
poderia ser confundida com eighteen
, portanto, você deve adicionar um Y. Portanto, a saída correta seriaYayteen bitey fleventy-four
No caso de 0xD0F4
, em vez de fazer Dickety-zero bitey fleventy-four
, ignoraríamos o zero e imprimiríamos Dickety-bitey fleventy-four
.
Os hífens devem aparecer apenas dentro dos grupos de dois, ou seja, o bitey não deve ser conectado a nenhum dos grupos com um hífen, a menos que o primeiro grupo seja apenas uma palavra! Assim 0x04F4
seria four-bitey fleventy-four
, mas 0x44F4
seria forty-four bitey fleventy-four
. Como o tricoplax disse, a mordida só deve ser hifenizada ao seguir um número redondo.
Para uma visão abrangente de como isso funcionará, confira o exemplo de E / S abaixo.
Objetivo
Crie um programa ou função que use uma string hexadecimal como argumento de entrada ou função e produza sua pronúncia. A saída deve ter capitalização adequada. Você pode supor que o tamanho desse número sempre será 4.
Exemplo 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"
Isso é código-golfe , portanto, o menor número de bytes vence.