Промовляння 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"
Це код-гольф , тому виграє найменше кількість байтів.