Вдохновленный этим вопросом от electronics.SE , вот вам вызов:
Напишите программу или подпрограмму, которая принимает последовательность десятичных цифр (от 0 до 9) и произносит их вслух, без использования существующего инструмента синтеза речи.
Входные данные:
Вы можете запросить ввод цифр в любом приемлемом формате, например, в виде строки цифр ASCII, массива целых чисел, числа в кодировке BCD и т. Д. Если ваше решение представляет собой исполняемую программу, вы можете принять ввод как параметр командной строки, прочитать его из стандартного ввода или получить его любым другим разумным способом.
Ваша программа должна иметь возможность произносить не менее восьми цифр за вызов. Вы можете предположить, что первая цифра не ноль, если только это не единственная цифра.
Выход:
Ваша программа может либо озвучивать цифры напрямую, используя аудиоустройство, либо может выводить воспроизводимый звуковой файл. Выходной файл, если таковой имеется, может быть в любом стандартном аудиоформате или может состоять из необработанных образцов данных. Если вы выводите необработанные данные семплов, обратите внимание на соответствующие параметры для воспроизведения (частота дискретизации, биты на семпл, порядковый номер, знак / без знака, количество каналов). Форматы, поддерживаемые aplay, являются предпочтительными.
Вы можете сами выбирать детали того, как будут произноситься цифры, но ваш вывод должен состоять из цифр на английском языке, понятных обычному носителю английского языка , и он должен быть достаточно ясным, чтобы слушатель мог точно транскрибировать произнесенное восьмизначное случайное число. Нет, только звуковой сигнал n раз не считается. Не забудьте включить паузы между цифрами.
Подсчет очков:
Применяются стандартные правила подсчета кода для игры в гольф : ваш счет - это длина кода в байтах или, если код написан в тексте Unicode, в символах Unicode. Самый низкий балл побеждает. Любой язык идет.
Поскольку первоначальный вопрос об электронике. SE касался встроенного программирования, я счел, что было бы целесообразно бросить кость авторам, использующим языки низкого уровня: если ваше решение написано на скомпилированном языке, вы можете посчитать длину скомпилированный исполняемый файл в байтах как ваш счет. (Да, скомпилированный байт-код, такой как .class
файл Java , тоже в порядке.) Если вы решите использовать эту опцию, пожалуйста, включите копию скомпилированного исполняемого файла в ваш ответ (например, в виде шестнадцатеричного дампа) вместе с вашим исходным кодом и версия компилятора и опции, которые вы использовали для его генерации.
Похвальная , наряду с +50 повторения щедротами, будет предоставлены первым ответ , который также отвечает критериям первоначального вопроса , то есть способно работать на встроенный MCU с 4 кб вспышки и 1 кб SRAM.
Ограничения:
Вы не имеете права использовать какие-либо файлы или сетевые ресурсы , которые не являются частью стандартной среды выполнения выбранного вами языка, если вы не учитываете длину указанных файлов или ресурсов как часть вашей оценки. (Это запрещено, например, загружать аудио образцы из Интернета.)
Вы также не имеете права использовать какие-либо ранее существующие инструменты или библиотеки для синтеза речи или компиляции аудиоданных (если только вы не учитываете их размер как часть своей оценки), даже если они включены в стандартную среду выполнения выбранного языка.