Sự miêu tả
Trước đây đã có khá nhiều thử thách khác liên quan đến những con số này và tôi hy vọng đây không phải là một trong số chúng.
Số tam giác thứ n bằng tổng của tất cả các số tự nhiên lên đến n , công cụ đơn giản. Có một trang wikipedia và một mục tại OEIS , cho những người muốn thông báo thêm cho mình.
Bây giờ, Gauss phát hiện ra rằng mọi số tự nhiên có thể được biểu thị dưới dạng tổng của ba số tam giác (bao gồm cả số này 0
), và sẽ tốt hơn nếu có nhiều hơn một số, ví dụ 0 + 1 + 1 = 2
.
Thử thách
Nhiệm vụ của bạn là viết một chương trình hoặc hàm, cho một số tự nhiên (bao gồm 0
), in ba số tam giác tổng hợp với đối số. Bạn có thể in các số được phân tách bằng dấu cách, dưới dạng một mảng hoặc bằng một phương thức khác mà bạn thích. Tuy nhiên, không được phép sử dụng bất kỳ hàm dựng sẵn nào để lấy trực tiếp một mảng, một phạm vi hoặc bất kỳ hình thức thu thập nào khác có chứa danh sách các số tam giác (ví dụ một nguyên tử duy nhất tạo ra phạm vi).
Các trường hợp thử nghiệm
9 -> 6 + 3 + 0 or 3 + 3 + 3
12 -> 6 + 6 + 0 or 6 + 3 + 3 or 10 + 1 + 1
13 -> 6 + 6 + 1
1 -> 1 + 0 + 0
0 -> 0 + 0 + 0
Lưu ý: Nếu có nhiều hơn một kết hợp có thể, bạn có thể in bất kỳ hoặc tất cả, nhưng bạn phải in bất kỳ kết hợp nào chỉ một lần, loại bỏ tất cả các kết hợp là kết quả của việc sắp xếp lại các kết hợp khác. Tôi thực sự đánh giá cao một liên kết thử và một lời giải thích, tôi thực sự thích xem cách bạn giải quyết vấn đề;)
Đây là mã golf , vì vậy sơ hở tiêu chuẩn áp dụng. Có thể câu trả lời ngắn nhất trong byte giành chiến thắng!
a
sẽ không luôn là số tam giác
n
và trả về danh sách các n
số tam giác đầu tiên được phép? Điều đó cảm thấy khá khó khăn đối với một số ngôn ngữ cụ thể, mặc dù tôi không biết đó là ngôn ngữ nào.