Zainspirowany tym pytaniem z Electronics.SE , oto wyzwanie dla Ciebie:
Napisz program lub podprogram, który pobiera ciąg cyfr dziesiętnych (od 0 do 9) i wypowiada je na głos, bez użycia istniejącego narzędzia do syntezy mowy.
Wejście:
Możesz poprosić o podanie cyfr wejściowych w dowolnym rozsądnym formacie, np. Jako ciąg cyfr ASCII, tablica liczb całkowitych, liczba zakodowana w BCD itp. Jeśli twoje rozwiązanie jest programem wykonywalnym, możesz wziąć dane wejściowe jako parametr wiersza poleceń, przeczytaj go ze standardowego wejścia lub uzyskaj w inny rozsądny sposób.
Twój program musi umieć wymawiać co najmniej osiem cyfr na każde wywołanie. Państwo może zakładać, że pierwsza cyfra nie jest zero, chyba że jest to tylko cyfra.
Wynik:
Twój program może wymawiać liczby bezpośrednio za pomocą urządzenia audio lub może odtwarzać odtwarzany plik dźwiękowy. Plik wyjściowy, jeśli istnieje, może być w dowolnym standardowym formacie audio lub może składać się z surowych próbek danych. Jeśli wyprowadzasz surowe dane przykładowe, zwróć uwagę na odpowiednie parametry do odtwarzania (częstotliwość próbkowania, liczba bitów na próbkę, endianness, podpisany / niepodpisany, liczba kanałów). Preferowane są formaty obsługiwane przez aplikację .
Możesz swobodnie decydować o szczegółach, w jaki sposób będą wypowiadane liczby, ale twój wynik powinien składać się z cyfr w języku angielskim wymawianych w sposób zrozumiały dla typowego anglojęzycznego i powinno być wystarczająco jasne, aby słuchacz mógł dokładnie transkrybować ośmiocyfrowa liczba mówiona. Nie, tylko dźwięk n razy się nie liczy. Nie zapomnij uwzględnić pauz między cyframi.
Punktacja:
Obowiązują standardowe reguły oceniania kodu-golfa : Twój wynik to długość kodu w bajtach lub, jeśli kod jest napisany tekstem Unicode, znakami Unicode. Najniższy wynik wygrywa. Dowolny język.
Ponieważ pierwotne pytanie na temat elektroniki. SE dotyczyło programowania wbudowanego, uznałem, że należałoby rzucić kość autorom używającym języków niskiego poziomu: jeśli twoje rozwiązanie jest napisane w języku skompilowanym, możesz policzyć długość skompilowany plik wykonywalny w bajtach jako wynik. (Tak, prekompilowany kod bajtowy, taki jak .class
plik Java , również jest OK.) Jeśli zdecydujesz się skorzystać z tej opcji, dołącz do swojej kopii kopię skompilowanego pliku wykonywalnego (np. Zrzut heksadecymalny) wraz z kodem źródłowym oraz wersję kompilatora i opcje użyte do jej wygenerowania.
Wyróżnienie , wraz z bounty +50 rep, zostaną przyznane pierwszej odpowiedzi, które również spełnia kryteria oryginalne pytanie , to znaczy jest w stanie działać na osadzonym MCU z 4 KB Flash i 1 kb SRAM.
Ograniczenia:
Nie możesz korzystać z plików lub zasobów sieciowych , które nie są częścią standardowego środowiska uruchomieniowego wybranego przez Ciebie języka, chyba że uwzględnisz długość tych plików lub zasobów jako część wyniku. (Ma to na celu uniemożliwić np. Ładowanie próbek audio z Internetu).
Nie możesz również używać żadnych wcześniej istniejących narzędzi do syntezy mowy, bibliotek lub kompilacji danych audio (chyba że uwzględnisz ich rozmiar jako część wyniku), nawet jeśli są one zawarte w standardowym środowisku uruchomieniowym wybranego języka.