Lấy cảm hứng từ câu hỏi này từ thiết bị điện tử. E , đây là một thách thức cho bạn:
Viết chương trình hoặc chương trình con lấy một chuỗi các chữ số thập phân (0 đến 9) và nói to chúng, mà không cần sử dụng một công cụ tổng hợp giọng nói hiện có.
Đầu vào:
Bạn có thể yêu cầu các chữ số đầu vào được cung cấp ở bất kỳ định dạng hợp lý nào, ví dụ như một chuỗi các chữ số ASCII, một dãy số nguyên, số được mã hóa BCD, v.v. Nếu giải pháp của bạn là một chương trình thực thi, bạn có thể lấy đầu vào là một tham số dòng lệnh, đọc nó từ đầu vào tiêu chuẩn hoặc có được nó theo bất kỳ cách hợp lý nào khác.
Chương trình của bạn phải có khả năng nói ít nhất tám chữ số cho mỗi lần gọi. Bạn có thể cho rằng chữ số đầu tiên không bằng 0, trừ khi đó là chữ số duy nhất.
Đầu ra:
Chương trình của bạn có thể nói số trực tiếp bằng thiết bị âm thanh hoặc có thể phát ra tệp âm thanh có thể phát. Tệp đầu ra, nếu có, có thể ở bất kỳ định dạng âm thanh tiêu chuẩn nào, hoặc nó có thể bao gồm dữ liệu mẫu thô. Nếu bạn xuất dữ liệu mẫu thô, vui lòng lưu ý các tham số thích hợp để phát lại (tốc độ mẫu, bit trên mỗi mẫu, độ bền, ký / không dấu, # của các kênh). Các định dạng được hỗ trợ bởi aplay được ưu tiên.
Bạn có thể tự do quyết định các chi tiết về cách các con số sẽ được nói, nhưng đầu ra của bạn phải bao gồm các chữ số tiếng Anh được nói theo cách dễ hiểu đối với một người nói tiếng Anh thông thường , và nó phải đủ rõ ràng để người nghe có thể phiên âm chính xác một số ngẫu nhiên tám chữ số nói. Không, chỉ có tiếng bíp n lần không được tính. Đừng quên bao gồm tạm dừng giữa các chữ số.
Ghi điểm:
Áp dụng quy tắc chấm điểm golf tiêu chuẩn : Điểm của bạn là độ dài mã của bạn theo byte hoặc, nếu mã của bạn được viết bằng văn bản Unicode, bằng ký tự Unicode. Điểm số thấp nhất chiến thắng. Bất kỳ ngôn ngữ đi.
Như câu hỏi ban đầu về điện tử. E là về lập trình nhúng, tôi cảm thấy sẽ rất phù hợp khi ném xương cho các tác giả sử dụng các ngôn ngữ cấp thấp: nếu giải pháp của bạn được viết bằng ngôn ngữ được biên dịch, bạn có thể chọn đếm độ dài của biên dịch tập tin thực thi theo byte như điểm số của bạn. (Có, mã byte được biên dịch trước, chẳng hạn như .class
tệp Java , cũng ổn.) Nếu bạn chọn sử dụng tùy chọn này, vui lòng bao gồm một bản sao của tệp thực thi được biên dịch trong câu trả lời của bạn (ví dụ như kết xuất hex) cùng với mã nguồn của bạn và phiên bản trình biên dịch và các tùy chọn bạn đã sử dụng để tạo ra nó.
Một đề cập đáng trân trọng , cùng với tiền thưởng đại diện +50, sẽ được cấp cho câu trả lời đầu tiên đáp ứng các tiêu chí của câu hỏi ban đầu , tức là có khả năng chạy trên MCU nhúng với 4 kb flash và 1 kb SRAM.
Những hạn chế:
Bạn không được sử dụng bất kỳ tệp hoặc tài nguyên mạng nào không phải là một phần của môi trường thời gian chạy tiêu chuẩn của ngôn ngữ bạn đã chọn, trừ khi bạn tính độ dài của các tệp hoặc tài nguyên đã nói là một phần của điểm số của bạn. (Điều này là không cho phép, ví dụ như tải các mẫu âm thanh từ web.)
Bạn cũng không được sử dụng bất kỳ công cụ tổng hợp giọng nói hoặc thư viện hoặc tập hợp dữ liệu âm thanh nào có sẵn (trừ khi bạn cũng tính kích thước của chúng là một phần của điểm số của mình), ngay cả khi chúng được đưa vào môi trường thời gian chạy tiêu chuẩn của ngôn ngữ bạn đã chọn.