Описание
Раньше было довольно много других проблем, связанных с этими цифрами, и я надеюсь, что этого нет среди них.
П е треугольное число равно сумме всех натуральных чисел вплоть до п , простые вещи. Есть страница википедии и запись в 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
треугольных чисел являются разрешены? Это скорее направлено против какого-то определенного языка, хотя я не знаю, какой именно.