Учитывая последовательность OEIS A033581 , которая является бесконечной последовательностью, n -й член (0-индексация) задается формулой 6 × n 2 в замкнутой форме .
Ваша задача - написать код, который выводит все подмножества набора из N первых чисел в последовательности так, чтобы сумма подмножества была идеальным квадратом.
правила
- Целое число
N
дается в качестве ввода. - Вы не можете повторно использовать число, уже использованное в сумме. (то есть каждое число может появляться в каждом подмножестве не более одного раза)
- Используемые числа могут быть непоследовательными.
- Код с наименьшим размером выигрывает.
пример
Данная последовательность: {0,6,24,54,96, ..., 15000}
Один из обязательных подмножеств будет {6,24,294}, потому что
6+24+294 = 324 = 18^2
Вам нужно найти все такие наборы всех возможных длин в заданном диапазоне.
code-golf
math
sequence
subsequence
prog_SAHIL
источник
источник
Ответы:
05AB1E , 10 байтов
Попробуйте онлайн!
Как?
источник
Haskell ,
114 104 10386 байтСпасибо Лайкони и Орьяну Йохансену за большую часть игры в гольф! :)
Попробуйте онлайн!
Чуть более читаемая версия:
источник
Pyth , 12 байт
-2 байта благодаря мистеру Xcoder
Попробуйте онлайн!
Для удаления
[]
и нужно добавить еще 2 байта[0]
, но они кажутся мне правильным выводом!Explanataion
источник
fsI@sT2ym*6*
.Чисто ,
145... 97 байтПопробуйте онлайн!
Использует вспомогательную функцию
@
для генерации мощности, заданной дляn
термов, путем объединения каждого терма[[],[6*n^2],...]
с каждым[[],[6*(n-1)*2],...]
рекурсивно и в обратном порядке.Частичная функция
f
затем составляется (где->
обозначаетo
состав) как:apply @ -> take the elements where -> the sum -> is a square
К сожалению, невозможно пропустить
f=
и предоставить частичный литерал функции , потому что правила приоритета требуют, чтобы он был заключен в скобки.источник
Желе , 12 байт
Попробуйте онлайн!
Выходные данные представляют собой список подмножеств, включая
0
s и пустое подмножество.источник
Wolfram Language (Mathematica) , 49 байтов
Метод грубой силы
Попробуйте онлайн!
источник
JavaScript (ES7), 107 байт
демонстрация
Показать фрагмент кода
комментарии
источник
Japt , 15 байт
Попробуй это
объяснение
Генерация на массив целых чисел от 0 до ввода (
ò
) и прохождение каждого через функцию (_ Ã
), возведение в квадрат it (²
) и mutiplying на 6 (*6
). Получите все комбинации этого array (à
) и удалите те, которые возвращают truey (k
) при прохождении через функцию (_
), которая добавляет их элементы (x
), получает квадратный корень результата (¬
) и модов, что на 1 (u1
)источник