Dada la secuencia OEIS A033581 , que es la secuencia infinita, el n 'th plazo (0-indexación) viene dada por la forma fórmula cerrada 6 × n 2 .
Su tarea es escribir código, que genera todos los subconjuntos del conjunto de N primeros números en la secuencia, de modo que la suma del subconjunto sea un cuadrado perfecto.
Reglas
- El entero
N
se da como entrada. - No puede reutilizar un número ya utilizado en la suma. (es decir, cada número puede aparecer en cada subconjunto como máximo una vez)
- Los números utilizados pueden ser no consecutivos.
- Código con el menor tamaño gana.
Ejemplo
La secuencia dada es {0,6,24,54,96, ..., 15000}
Uno de los subconjuntos requeridos será {6,24,294}, porque
6+24+294 = 324 = 18^2
Necesita encontrar todos estos conjuntos de todas las longitudes posibles en el rango dado.
code-golf
math
sequence
subsequence
prog_SAHIL
fuente
fuente
Respuestas:
05AB1E , 10 bytes
Pruébalo en línea!
¿Cómo?
fuente
Haskell ,
11410410386 bytes¡Gracias a Laikoni y Ørjan Johansen por la mayor parte del golf! :)
Pruébalo en línea!
La versión ligeramente más legible:
fuente
Pyth , 12 bytes
-2 bytes gracias al Sr. Xcoder
Pruébalo en línea!
Es necesario agregar 2 bytes más para eliminar
[]
y[0]
, ¡pero me parecen resultados válidos!Explanataion
fuente
fsI@sT2ym*6*
.Limpio ,
145... 97 bytesPruébalo en línea!
Utiliza la función auxiliar
@
para generar el conjunto de potencia enn
términos al concatenar cada término de[[],[6*n^2],...]
con cada término de forma[[],[6*(n-1)*2],...]
recursiva y en orden inverso.La función parcial
f
se compone (donde->
denotao
composición) como:apply @ -> take the elements where -> the sum -> is a square
Desafortunadamente, no es posible omitir
f=
y proporcionar un literal de función parcial , porque las reglas de precedencia requieren que tenga corchetes cuando se usa en línea.fuente
Jalea , 12 bytes
Pruébalo en línea!
La salida es una lista de subconjuntos que incluyen
0
sy el subconjunto vacío.fuente
Wolfram Language (Mathematica) , 49 bytes
Enfoque de fuerza bruta
Pruébalo en línea!
fuente
JavaScript (ES7), 107 bytes
Manifestación
Mostrar fragmento de código
Comentado
fuente
Japt , 15 bytes
Intentalo
Explicación
Genere en una matriz de enteros desde 0 hasta input (
ò
) y pase cada uno a través de una función (_ Ã
),²
cuadrándola ( ) y multiplicándose por 6 (*6
). Obtenga todas las combinaciones de esa matriz (à
) y elimine aquellas que devuelven verdadero (k
) cuando se pasa a través de una función (_
) que agrega sus elementos (x
), obtiene la raíz cuadrada del resultado (¬
) y modifica eso por 1 (u1
)fuente