Inspiré par cette question de l'électronique.SE , voici un défi pour vous:
Écrivez un programme ou un sous-programme qui prend une séquence de chiffres décimaux (0 à 9) et les prononce à haute voix, sans utiliser un outil de synthèse vocale existant.
Contribution:
Vous pouvez demander que les chiffres d'entrée soient fournis dans n'importe quel format raisonnable, par exemple sous la forme d'une chaîne de chiffres ASCII, d'un tableau d'entiers, d'un numéro codé BCD, etc. Si votre solution est un programme exécutable, vous pouvez prendre l'entrée comme un paramètre de ligne de commande, lisez-le à partir de l'entrée standard ou obtenez-le de toute autre manière raisonnable.
Votre programme doit être capable de parler au moins huit chiffres par appel. Vous pouvez supposer que le premier chiffre n'est pas zéro, sauf s'il s'agit du seul chiffre.
Production:
Votre programme peut soit prononcer les chiffres directement à l'aide d'un périphérique audio, soit produire un fichier audio lisible. Le fichier de sortie, le cas échéant, peut être dans n'importe quel format audio standard, ou il peut être constitué de données d'échantillon brutes. Si vous sortez des données d'échantillon brutes, veuillez noter les paramètres appropriés pour la lecture (fréquence d'échantillonnage, bits par échantillon, endianness, signé / non signé, # de canaux). Les formats pris en charge par aplay sont préférés.
Vous êtes libre de décider des détails sur la façon dont les chiffres seront prononcés, mais votre sortie doit être composée de chiffres de langue anglaise parlés d'une manière compréhensible pour un anglophone typique , et il doit être suffisamment clair pour que l'auditeur puisse transcrire avec précision un nombre aléatoire prononcé à huit chiffres. Non, juste bips n ne compte pas. N'oubliez pas d'inclure des pauses entre les chiffres.
Notation:
Les règles standard de notation par code de golf s'appliquent: votre score est la longueur de votre code en octets ou, si votre code est écrit en texte Unicode, en caractères Unicode. Le score le plus bas l'emporte. N'importe quelle langue va.
Comme la question d'origine sur l'électronique.SE concernait la programmation intégrée, j'ai pensé qu'il serait approprié de jeter un os aux auteurs utilisant des langages de bas niveau: si votre solution est écrite dans un langage compilé, vous pouvez choisir de compter la longueur du fichier exécutable compilé en octets comme score. (Oui, le bytecode précompilé, tel qu'un .class
fichier Java , est OK aussi.) Si vous choisissez d'utiliser cette option, veuillez inclure une copie de l'exécutable compilé dans votre réponse (par exemple, comme un vidage hexadécimal) avec votre code source et la version du compilateur et les options que vous avez utilisées pour le générer.
Une mention honorable , avec une prime de +50 rep, sera accordée à la première réponse qui répond également aux critères de la question d'origine , c'est-à-dire capable de fonctionner sur un MCU intégré avec 4 ko de flash et 1 ko de SRAM.
Restrictions:
Vous ne pouvez pas utiliser de fichiers ou de ressources réseau qui ne font pas partie de l'environnement d'exécution standard de votre langue choisie, sauf si vous comptez la longueur desdits fichiers ou ressources dans votre score. (C'est pour interdire par exemple le chargement d'échantillons audio à partir du Web.)
Vous ne pouvez pas non plus utiliser d' outils ou de bibliothèques de synthèse vocale préexistants ou des compilations de données audio (sauf si vous comptez également leur taille dans le cadre de votre partition), même s'ils sont inclus dans l'environnement d'exécution standard de la langue de votre choix.