Опис
Раніше вже було чимало інших викликів щодо цих чисел, і я сподіваюся, що цього немає серед них.
П е трикутне число дорівнює сумі всіх натуральних чисел аж до п , прості речі. Є ціла сторінка Вікіпедії і запис в 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трикутних чисел є дозволені? Це відчувається досить орієнтованим на якусь конкретну мову, хоча я не знаю, на якій.