Wymowa Hex
Dla tych z was, którzy nie są inicjowani programem Silicon Valley, to wyzwanie jest inspirowane wymianą, która przebiega w ten sposób ( 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.
Należy zauważyć, że technicznie rzecz biorąc, 0x9 * 0xF = 0x87
nie „pechowa piątka”, ale rodzi to ważne pytanie - jak w rzeczywistości wypowiesz hex w rozmowie? To nie jest tak, oh ex eff eff
że łatwo spływa z języka, więc co powinniśmy zrobić? Oto przydatna tabela wymowy, którą będziemy śledzić.
A = ay A0 = atta-
B = bee B0 = bibbity-
C = cee C0 = city-
D = dee D0 = dickety-
E = ee E0 = ebbity-
F = eff F0 = fleventy-
Możemy podzielić 4-długościową liczbę szesnastkową na dwie grupy po dwie i określić wymowę z powyższej tabeli, a także wspólną angielską wymowę liczb. Tak więc na przykład 0xFFAB
otrzymalibyśmy Fleventy-eff bitey atta-bee
.
Jeśli podany jest numer, np . 0xF5AB
Wydrukowałbyś Fleventy-five bitey atta-bee
. Ponadto, jeśli liczba rozpoczyna jedną z grup, powinieneś użyć jej wymowy „dziesiątki”. Na przykład 0x5FAA
stałby się Fifty-eff bitey atta-ay
. W przypadku, gdy masz coś takiego 0x1FAC
, byłoby to Effteen bitey atta-cee
. Ale gdyby zastosować tę regułę 0x1AF4
, a-teen
można by ją pomylić eighteen
, więc musisz wstawić Y. Tak więc poprawnym wyjściem byłobyYayteen bitey fleventy-four
W przypadku 0xD0F4
zamiast Dickety-zero bitey fleventy-four
zignorować zero i wydrukować Dickety-bitey fleventy-four
.
Łączniki powinny pojawiać się tylko w grupach dwóch, tzn. Zgryzu nie należy łączyć z żadną grupą łącznika, chyba że pierwsza grupa to tylko jedno słowo! Tak 0x04F4
byłoby four-bitey fleventy-four
, ale 0x44F4
byłoby forty-four bitey fleventy-four
. Jak powiedział trichoplax , ugryzienie powinno być łączone tylko po zaokrągleniu liczby.
Aby uzyskać kompleksowe spojrzenie na to, jak to będzie działać, sprawdź przykładowe We / Wy poniżej.
Cel
Utwórz program lub funkcję, która pobierze ciąg szesnastkowy jako argument wejściowy lub argument funkcji i wygeneruje jego wymowę. Dane wyjściowe muszą mieć poprawną wielkość liter. Możesz założyć, że długość tego numeru będzie zawsze wynosić 4.
Przykład 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"
To jest golf golfowy , więc wygrywa najmniejsza liczba bajtów.