Промовляння 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
не «швидкості п’ять», але це викликає важливе питання - як би ви насправді вимовляли шістнадцять у розмові? Це не так, як 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-
Ми можемо розділити шістнадцятковий шістнадцятковий номер на дві групи по дві та визначити вимову з наведеної вище таблиці, а також загальну англійську вимову для чисел. Отже, для прикладу 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
. Як говорив трихоплакс , біти повинні бути переносяться лише після наступного кругового числа.
Щоб вичерпно ознайомитись з тим, як це буде працювати, ознайомтеся з прикладом вводу / виводу нижче.
Об'єктивна
Створіть програму або функцію, яка буде приймати шістнадцятковий рядок як вхідний або аргумент функції і виробляти її вимову. Вихід повинен мати правильну капіталізацію. Можна припустити, що довжина цього числа завжди буде 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"
Це код-гольф , тому виграє найменше кількість байтів.