Ispirato da questa domanda di electronics.SE , ecco una sfida per te:
Scrivi un programma o una subroutine che accetta una sequenza di cifre decimali (da 0 a 9) e le pronuncia ad alta voce, senza utilizzare uno strumento di sintesi vocale esistente.
Ingresso:
È possibile richiedere che le cifre di input vengano fornite in qualsiasi formato ragionevole, ad esempio come una stringa di cifre ASCII, una matrice di numeri interi, un numero codificato BCD, ecc. Se la soluzione è un programma eseguibile, è possibile prendere l'input come un parametro della riga di comando, leggerlo dall'input standard o ottenerlo in qualsiasi altro modo ragionevole.
Il tuo programma deve essere in grado di pronunciare almeno otto cifre per chiamata. Si può presumere che la prima cifra non sia zero, a meno che non sia l'unica cifra.
Produzione:
Il tuo programma può pronunciare i numeri direttamente utilizzando un dispositivo audio o può generare un file audio riproducibile. Il file di output, se presente, può essere in qualsiasi formato audio standard o può essere costituito da dati di esempio non elaborati. Se si producono dati di campionamento non elaborati, tenere presente i parametri appropriati per la riproduzione (frequenza di campionamento, bit per campione, endianness, con / senza segno, numero di canali). Sono preferiti i formati supportati da aplay .
Sei libero di decidere i dettagli su come i numeri saranno pronunciati, ma il tuo output dovrebbe consistere in cifre in lingua inglese parlate in modo comprensibile a un tipico oratore inglese e dovrebbe essere abbastanza chiaro per l'ascoltatore da poter trascrivere accuratamente un numero casuale di otto cifre parlato. No, solo il segnale acustico n volte non conta. Non dimenticare di includere pause tra le cifre.
punteggio:
Si applicano le regole standard per il calcolo del codice-golf : il tuo punteggio è la lunghezza del tuo codice in byte o, se il tuo codice è scritto nel testo Unicode, in caratteri Unicode. Il punteggio più basso vince. Qualsiasi lingua va.
Poiché la domanda originale sull'elettronica.SE riguardava la programmazione integrata, ho ritenuto opportuno gettare un osso agli autori che usano linguaggi di basso livello: se la tua soluzione è scritta in un linguaggio compilato, puoi scegliere di contare la lunghezza del file eseguibile compilato in byte come punteggio. (Sì, anche il codice precompilato, come un .class
file Java , va bene.) Se si sceglie di utilizzare questa opzione, si prega di includere una copia dell'eseguibile compilato nella risposta (ad es. Come un dump esadecimale) insieme al codice sorgente e la versione del compilatore e le opzioni utilizzate per generarlo.
Una menzione d'onore , insieme a una ricompensa di +50, verrà data alla prima risposta che soddisfa anche i criteri della domanda originale , ovvero è in grado di funzionare su un MCU incorporato con 4 kb di flash e 1 kb di SRAM.
restrizioni:
Non è possibile utilizzare file o risorse di rete che non fanno parte dell'ambiente di runtime standard della lingua prescelta, a meno che non si contenga la lunghezza di tali file o risorse come parte del punteggio. (Questo non consente ad esempio il caricamento di campioni audio dal Web.)
Non è inoltre possibile utilizzare strumenti di sintesi vocale o librerie o raccolte di dati audio preesistenti (a meno che non si contino anche le loro dimensioni come parte della partitura), anche se sono inclusi nell'ambiente di runtime standard della lingua prescelta.