Desafío
Suponga que tiene una lista de números y un valor objetivo. Encuentre el conjunto de todas las combinaciones de sus números que se suman al valor objetivo, devolviéndolos como índices de lista.
Entrada y salida
La entrada tomará una lista de números (no necesariamente únicos) y un número de suma objetivo. La salida será un conjunto de listas no vacías, cada lista con valores enteros correspondientes a la posición de los valores en la lista de entrada original.
Ejemplos
Input: values = [1, 2, 1, 5], target = 8
Output: [ [0,1,3], [1,2,3] ]
Input: values = [4.8, 9.5, 2.7, 11.12, 10], target = 14.8
Output: [ [0,4] ]
Input: values = [7, 8, 9, -10, 20, 27], target = 17
Output: [ [1,2], [0,3,4], [3,5] ]
Input: values = [1, 2, 3], target = 7
Output: [ ]
Puntuación
Este es el código de golf , por lo que gana el código más corto.
code-golf
permutations
Soapergem
fuente
fuente
Respuestas:
Casco , 10 bytes
1 indexado. Pruébalo en línea!
Explicación
Esto utiliza la última incorporación a Husk,
η
(actuar sobre índices). La idea es queη
toma una función de orden superiorα
(aquí la función lambda en línea) y una listax
, y llamaα
a la función de indexación dex
(que está⁰
en el programa anterior) y los índices dex
. Por ejemplo,ṁ⁰
toma un subconjunto de índices, asigna índices ax
ellos y suma los resultados.fuente
JavaScript (ES6), 96 bytes
Toma entrada en la sintaxis de curry
(list)(target)
.Casos de prueba
Esto fallaría en el segundo caso de prueba si 4.8 y 10 se intercambiaran debido a un error de precisión IEEE 754, es decir,
14.8 - 4.8 - 10 == 0
pero14.8 - 10 - 4.8 != 0
. Creo que esto está bien , aunque puede haber una referencia más relevante en algún lugar del meta.Mostrar fragmento de código
Comentado
fuente
reduce
s? Tengo que votar esto.Python 2 , 110 bytes
Pruébalo en línea!
fuente
R ,
8584 bytesPruébalo en línea!
1 indexado.
combn
generalmente devuelve amatrix
, pero la configuraciónsimplify=F
devuelve alist
en su lugar, lo que nos permitec
oncatenar todos los resultados juntos.combn(I,i,,F)
devuelve todas las combinaciones de índices, y tomamosN(l,i,sum)==k
como índice en esa lista para determinar los que son igualesk
.fuente
J ,
3231 bytesPruébalo en línea!
fuente
4 :'<@I.t#~x=1#.y#~t=.#:}.i.2^#y'
. Pruébalo en línea!Japt , 14 bytes
¡Pruébalo en línea!
Cómo funciona
fuente
m,
. TeníaÊo à k@VnXx@gX
para el mismo recuento de bytes.Limpio ,
10410298 bytesPruébalo en línea!
fuente
[1, 2, -1, 5] 0 --> [[],[2,0]]
Se requiere un conjunto de listas no vacías.Haskell , 76 bytes
Pruébalo en línea!
fuente
[1, 2, -1, 5]#0 --> [[],[0,2]]
Se requiere un conjunto de listas no vacías.Jalea , 11 bytes
Pruébalo en línea!
1 indexado. 4 bytes gastados en devolver índices en lugar de solo los elementos en sí.
-1 byte gracias al usuario202729
-1 byte gracias a Jonathan Allan
fuente
⁴
es innecesario si lo usa enç
lugar deÇ
.Wolfram Language (Mathematica) , 43 bytes
1 indexado.
Pruébalo en línea!
fuente
Python 3 , 144 bytes
Pruébalo en línea!
0 indexado. 44 bytes gastados en devolver índices en lugar de solo los elementos en sí.
fuente
Brachylog ,
1815 bytesPruébalo en línea!
-3 bytes porque ahora funciona como generador . (Probablemente sea posible jugar más al golf, pero evitar la necesidad de usar índices es incómodo).
fuente
hiᶠ⊇z+ʰXh~t?∧Xt
sale a la misma longitud.Perl 6 , 45 bytes
Pruébalo
Expandido:
fuente
APL (NARS), 49 caracteres, 98 bytes
1 indexado; prueba:
comentario:
fuente
Pyth, 11 bytes
Pruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .
fuente