Dada a sequência OEIS A033581 , que é a sequência infinita, o n '° termo (0-indexação) é dada pela fórmula fechado forma 6 × N 2 .
Sua tarefa é escrever o código, que gera todos os subconjuntos do conjunto de N primeiros números na sequência, de forma que a soma do subconjunto seja um quadrado perfeito.
Regras
- O número inteiro
N
é dado como entrada. - Você não pode reutilizar um número já usado na soma. (ou seja, cada número pode aparecer em cada subconjunto no máximo uma vez)
- Os números usados podem ser não consecutivos.
- O código com o menor tamanho vence.
Exemplo
A sequência fornecida é {0,6,24,54,96, ..., 15000}
Um dos subconjuntos necessários será {6,24.294}, porque
6+24+294 = 324 = 18^2
Você precisa encontrar todos esses conjuntos de todos os comprimentos possíveis no intervalo especificado.
code-golf
math
sequence
subsequence
prog_SAHIL
fonte
fonte
Respostas:
05AB1E , 10 bytes
Experimente online!
Como?
fonte
Haskell ,
114 104 10386 bytesObrigado a Laikoni e Ørjan Johansen pela maior parte do golfe! :)
Experimente online!
A versão um pouco mais legível:
fonte
Pitão , 12 bytes
-2 bytes graças ao Sr. Xcoder
Experimente online!
Mais 2 bytes precisam ser adicionados para remover
[]
e[0]
, mas parecem saída válida para mim!Explicação
fonte
fsI@sT2ym*6*
.Limpo ,
145... 97 bytesExperimente online!
Usa a função auxiliar
@
para gerar a energia definida emn
termos concatenando cada termo de[[],[6*n^2],...]
com cada termo de forma[[],[6*(n-1)*2],...]
recursiva e na ordem inversa.A função parcial
f
é então composta (onde->
denotao
composição) como:apply @ -> take the elements where -> the sum -> is a square
Infelizmente, não é possível pular o
f=
e fornecer uma literal de função parcial , porque as regras de precedência exigem que ele tenha colchetes quando usado em linha.fonte
Gelatina , 12 bytes
Experimente online!
Saída é uma lista de subconjuntos, incluindo
0
s e o subconjunto vazio.fonte
Wolfram Language (Mathematica) , 49 bytes
Abordagem de força bruta
Experimente online!
fonte
JavaScript (ES7), 107 bytes
Demo
Mostrar snippet de código
Comentado
fonte
Japonês , 15 bytes
Tente
Explicação
Gere na matriz de números inteiros de 0 a input (
ò
) e passe cada um por uma função (_ Ã
), ao quadrado (²
) e mutiplicando por 6 (*6
). Obtenha todas as combinações desse array (à
) e remova aquelas que retornam verdade (k
) quando passadas por uma função (_
) que adiciona seus elementos (x
), obtém a raiz quadrada do resultado (¬
) e mods que por 1 (u1
)fonte