Prononcer Hex
Pour ceux d'entre vous non initiés à l'émission Silicon Valley, ce défi s'inspire d'un échange qui se passe comme ça ( 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.
Il convient de noter que sur le plan technique, 0x9 * 0xF = 0x87
pas «furtif-cinq», mais cela soulève une question importante - comment prononcez-vous réellement hex dans la conversation? Ce n'est pas comme si oh ex eff eff
la langue s'écoule facilement, alors que devons-nous faire? Voici un tableau de prononciation pratique que nous suivrons.
A = ay A0 = atta-
B = bee B0 = bibbity-
C = cee C0 = city-
D = dee D0 = dickety-
E = ee E0 = ebbity-
F = eff F0 = fleventy-
Nous pouvons diviser un nombre hexadécimal de 4 longueurs en deux groupes de deux et déterminer la prononciation à partir du tableau ci-dessus, ainsi que la prononciation anglaise courante des nombres. Donc, pour l'exemple 0xFFAB
, nous obtiendrions Fleventy-eff bitey atta-bee
.
Si un nombre est inclus, par exemple 0xF5AB
, vous imprimeriez Fleventy-five bitey atta-bee
. De plus, si un nombre commence l'un des groupes, vous devez utiliser sa prononciation "dizaines". Par exemple, 0x5FAA
deviendrait Fifty-eff bitey atta-ay
. Dans le cas où vous avez quelque chose comme 0x1FAC
ça, ce serait Effteen bitey atta-cee
. Mais, si cette règle devait être utilisée pour 0x1AF4
, a-teen
pourrait être confondue eighteen
, vous devez donc ajouter un Y. Ainsi, la sortie correcte seraitYayteen bitey fleventy-four
Dans le cas de 0xD0F4
, au lieu de le faire Dickety-zero bitey fleventy-four
, nous ignorerions le zéro et imprimerions Dickety-bitey fleventy-four
.
Les traits d'union ne doivent apparaître que dans les groupes de deux, c'est-à-dire que bitey ne doit pas être connecté à l'un ou l'autre groupe avec un trait d'union, sauf si le premier groupe n'est qu'un seul mot! Ce 0x04F4
serait le cas four-bitey fleventy-four
, mais le 0x44F4
serait forty-four bitey fleventy-four
. Comme l'a dit Trichoplax , le bitey ne doit être coupé que lorsque vous suivez un nombre rond.
Pour un aperçu complet de la façon dont cela fonctionnera, consultez l'exemple d'E / S ci-dessous.
Objectif
Créez un programme ou une fonction qui prendra une chaîne hexadécimale en entrée ou un argument de fonction et produira sa prononciation. La sortie doit avoir une bonne capitalisation. Vous pouvez supposer que la longueur de ce nombre sera toujours 4.
Exemple d'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"
Il s'agit de code-golf , donc le moins d'octets gagne.