Натхненний цим питанням від electronics.SE , ось вам:
Напишіть програму або підпрограму, яка бере послідовність десяткових цифр (0 до 9) і вимовляє їх вголос, не використовуючи існуючий інструмент синтезу мовлення.
Вхід:
Ви можете попросити надати вхідні цифри у будь-якому розумному форматі, наприклад, як рядок цифр ASCII, масив цілих чисел, номер, кодований BCD, і т. Д. Якщо ваше рішення - це виконувана програма, ви можете взяти введення як параметр командного рядка, прочитайте його зі стандартного вводу або отримайте його будь-яким іншим розумним способом.
Програма повинна вміти говорити принаймні вісім цифр за виклик. Ви можете припустити, що перша цифра не дорівнює нулю, якщо тільки це не єдина цифра.
Вихід:
Програма може або говорити цифрами безпосередньо за допомогою аудіопристрою, або може видавати відтворюваний звуковий файл. Вихідний файл, якщо він є, може мати будь-який стандартний аудіоформат, або він може складатися з необроблених зразкових даних. Якщо ви виводите необроблені зразкові дані, будь ласка, відзначте відповідні параметри відтворення (швидкість вибірки, біти на зразок, нестабільність, підписаний / непідписаний, # каналів). Формати, підтримувані aplay, є кращими.
Ви можете вільно визначити деталі того, як будуть розмовляти цифри, але ваш вихід повинен складатися з цифр англійської мови, розмовлених таким чином, зрозумілим типовому мовцю англійської мови , і він повинен бути достатньо зрозумілим, щоб слухач міг точно переписати розмовне восьмизначне випадкове число. Ні, просто звуковий сигнал n разів не рахується. Не забудьте включити паузи між цифрами.
Оцінка:
Застосовуються стандартні правила зарахування гольфу на код : Ваш бал - це довжина коду в байтах або, якщо ваш код написаний у тексті Unicode, у символах Unicode. Виграє найнижчий рахунок. Будь-яка мова йде.
Оскільки в оригінальному запитанні на електроніці.SE говорилося про вбудоване програмування, я вважав, що було б доцільно кинути кістки авторам за допомогою мов низького рівня: якщо ваше рішення написано на компільованій мові, ви можете обрати підрахунок тривалості складений виконуваний файл у байтах як ваш рахунок. (Так, попередньо скомпільований байт-код, такий як .class
файл Java , також добре.) Якщо ви вирішили скористатися цим параметром, будь ласка, включіть у свою відповідь копію компільованого виконуваного файлу (наприклад, як шістнадцятковий дамп) разом із вихідним кодом і версію компілятора та параметри, які ви використовували для її створення.
Похвальний , поряд з +50 повторенні щедрот, буде надано першу відповідь , який також відповідає критеріям, встановленим початкового питання , тобто здатне працювати на вбудований MCU з 4 кб спалаху і 1 кб SRAM.
Обмеження:
Ви не можете використовувати жодні файли та мережеві ресурси , які не входять до стандартного середовища виконання обраної вами мови, якщо ви не зараховуєте довжину цих файлів або ресурсів як частину вашої оцінки. (Це забороняється, наприклад, завантажувати зразки аудіо з Інтернету.)
Ви також не можете використовувати будь-які наявні засоби синтезу мови чи бібліотеки чи компіляції аудіоданих (якщо ви також не вважаєте їх розмір частиною вашої оцінки), навіть якщо вони включені у стандартне середовище виконання вибраної вами мови.