Défi
Supposons que vous ayez une liste de nombres et une valeur cible. Trouvez l'ensemble de toutes les combinaisons de vos nombres qui s'ajoutent à la valeur cible, en les renvoyant sous forme d'indices de liste.
Entrée et sortie
L'entrée prendra une liste de nombres (pas nécessairement uniques) et un numéro de sommation cible. La sortie sera un ensemble de listes non vides, chaque liste contenant des valeurs entières correspondant à la position des valeurs dans la liste d'entrée d'origine.
Exemples
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: [ ]
Notation
C'est le code-golf , donc le code le plus court gagne!
code-golf
permutations
savon
la source
la source
Réponses:
Husk , 10 octets
1 indexé. Essayez-le en ligne!
Explication
Cela utilise le dernier ajout à Husk,
η
(agir sur les indices). L'idée est queη
prend une fonction d'ordre supérieurα
(ici la fonction lambda en ligne) et une listex
, et fait appelα
à la fonction d'indexation dex
(qui est⁰
dans le programme ci-dessus) et les indices dex
. Par exemple,ṁ⁰
prend un sous-ensemble d'index, mappe l'indexationx
sur eux et additionne les résultats.la source
JavaScript (ES6), 96 octets
Prend une entrée dans la syntaxe de curry
(list)(target)
.Cas de test
Cela échouerait sur le 2ème cas de test si 4,8 et 10 étaient échangés en raison d'une erreur de précision IEEE 754 - c'est-à-dire
14.8 - 4.8 - 10 == 0
mais14.8 - 10 - 4.8 != 0
. Je pense que c'est bien , bien qu'il puisse y avoir une référence plus pertinente quelque part dans la méta.Afficher l'extrait de code
Commenté
la source
reduce
s? Je dois voter contre.Python 2 , 110 octets
Essayez-le en ligne!
la source
R ,
8584 octetsEssayez-le en ligne!
1 indexé.
combn
renvoie généralement unmatrix
, mais le paramètresimplify=F
renvoie un à lalist
place, ce qui nous permet dec
concaténer tous les résultats ensemble.combn(I,i,,F)
renvoie toutes les combinaisons d'indices, et nous prenonsN(l,i,sum)==k
comme index dans cette liste pour déterminer ceux qui sont égauxk
.la source
J ,
3231 octetsEssayez-le en ligne!
la source
4 :'<@I.t#~x=1#.y#~t=.#:}.i.2^#y'
. Essayez-le en ligne!Japt , 14 octets
Testez-le en ligne!
Comment ça fonctionne
la source
m,
. J'avaisÊo à k@VnXx@gX
pour le même nombre d'octets.Nettoyer ,
10410298 octetsEssayez-le en ligne!
la source
[1, 2, -1, 5] 0 --> [[],[2,0]]
Un ensemble de listes non vides est requis.Haskell , 76 octets
Essayez-le en ligne!
la source
[1, 2, -1, 5]#0 --> [[],[0,2]]
Un ensemble de listes non vides est requis.Gelée , 11 octets
Essayez-le en ligne!
1 indexé. 4 octets dépensés pour renvoyer des indices plutôt que juste les éléments eux-mêmes.
-1 octet grâce à user202729
-1 octet grâce à Jonathan Allan
la source
⁴
n'est pas nécessaire si vous utilisezç
plutôt queÇ
.Wolfram Language (Mathematica) , 43 octets
1 indexé.
Essayez-le en ligne!
la source
Python 3 , 144 octets
Essayez-le en ligne!
0 indexé. 44 octets dépensés pour renvoyer des indices plutôt que seulement les éléments eux-mêmes.
la source
Brachylog ,
1815 octetsEssayez-le en ligne!
-3 octets car il fonctionne désormais comme un générateur . (Il est probablement possible de jouer davantage au golf, mais contourner la nécessité d'utiliser des indices est difficile.)
la source
hiᶠ⊇z+ʰXh~t?∧Xt
sort à la même longueur.Perl 6 , 45 octets
Essaye-le
Étendu:
la source
APL (NARS), 49 caractères, 98 octets
1 indexé; tester:
commentaire:
la source
Pyth, 11 octets
Essayez-le en ligne ici ou vérifiez tous les cas de test en même temps ici .
la source