Произносить Hex
Для тех из вас, кто не имеет отношения к шоу «Силиконовая долина», этот вызов вызван обменом, который проходит следующим образом ( 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.
Следует отметить, что технически, а 0x9 * 0xF = 0x87
не «пятнадцать», но это поднимает важный вопрос - как бы вы на самом деле произносили hex в разговоре? Это не так oh ex eff eff
легко течет с языка, так что же нам делать? Вот удобная таблица произношения, которой мы будем следовать.
A = ay A0 = atta-
B = bee B0 = bibbity-
C = cee C0 = city-
D = dee D0 = dickety-
E = ee E0 = ebbity-
F = eff F0 = fleventy-
Мы можем разделить шестнадцатеричное число длиной 4 на две группы по два и определить произношение из таблицы выше, а также общее английское произношение чисел. Так, к примеру 0xFFAB
, мы бы получили Fleventy-eff bitey atta-bee
.
Если номер включен, например 0xF5AB
, вы бы распечатать Fleventy-five bitey atta-bee
. Кроме того, если число начинает одну из групп, вы должны использовать его произношение «десятки». Например, 0x5FAA
стал бы Fifty-eff bitey atta-ay
. В случае, если у вас есть что-то подобное 0x1FAC
, это будет Effteen bitey atta-cee
. Но, если бы это правило использовалось 0x1AF4
, его a-teen
можно было бы перепутать eighteen
, поэтому вы должны добавить Y. Таким образом, правильный вывод будетYayteen bitey fleventy-four
В случае 0xD0F4
, вместо того , чтобы делать Dickety-zero bitey fleventy-four
, мы игнорировали бы ноль и печатали Dickety-bitey fleventy-four
.
Дефисы должны появляться только в группах по два человека, то есть кусочки не должны быть связаны ни с одной группой с дефисом, если только первая группа не состоит из одного слова! Так 0x04F4
было бы four-bitey fleventy-four
, но 0x44F4
было бы forty-four bitey fleventy-four
. Как Trichoplax сказал, bitey следует hyphened только тогда , когда после круглого числа.
Для всестороннего взгляда на то, как это будет работать, посмотрите пример ввода / вывода ниже.
Задача
Создайте программу или функцию , которая примет шестнадцатеричную строку в качестве входных данных или аргумента функции и выдаст ее произношение. Вывод должен иметь правильную капитализацию. Вы можете предположить, что длина этого числа всегда будет 4.
Пример ввода / вывода
"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"
Это код-гольф , поэтому выигрывает наименьшее количество байтов.