Опис
Раніше вже було чимало інших викликів щодо цих чисел, і я сподіваюся, що цього немає серед них.
П е трикутне число дорівнює сумі всіх натуральних чисел аж до п , прості речі. Є ціла сторінка Вікіпедії і запис в OEIS , для тих , хто бажає повідомити себе далі.
Тепер Гаусс з’ясував, що кожне натуральне число може бути виражене сумою трьох трикутних чисел (до них належить 0
), і цілком добре мати одне число більше одного разу, наприклад0 + 1 + 1 = 2
.
Виклик
Ваше завдання - написати програму або функцію, задавши натуральне число (у тому числі 0
), друкує три трикутні числа, які підсумовують аргумент. Ви можете друкувати числа, розділені пробілами, як масив або іншим способом, який вам подобається. Однак це так заборонено використовувати будь-які вбудовані функції, щоб безпосередньо отримати масив, діапазон чи будь-яку іншу форму колекції, що містить перелік трикутних чисел (наприклад, один атом, який дає діапазон).
Тестові справи
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
Примітка: Якщо існує більше однієї можливої комбінації, ви можете надрукувати будь-яку або всі, але ви повинні надрукувати будь-яку комбінацію лише один раз, усуваючи всі комбінації, що є результатом перестановки інших комбінацій. Я дуже вдячний пробним посиланням та поясненням, я дуже люблю бачити, як ви вирішите проблему;)
Це код-гольф , тому застосовуються стандартні лазівки. Нехай виграє найкоротша відповідь у байтах!
a
не завжди буде трикутним числом
n
і повертають список перших n
трикутних чисел є дозволені? Це відчувається досить орієнтованим на якусь конкретну мову, хоча я не знаю, на якій.