Étant donné un tableau d'entiers a
qui contient n entiers et un seul entier x
; supprimer le moins d'éléments a
pour que la somme soit a
égale à x
. Si aucune combinaison de a
ne peut se former x
, renvoyez une valeur fausse.
Comme indiqué dans un commentaire, il s'agit de l'ensemble maximal avec une somme de x , excusez mon cerveau mathématique inférieur. J'ai oublié beaucoup de termes depuis le collège.
Exemples (Truthy):
f([1,2,3,4,5,6,7,8,9,10], 10) = [1,2,3,4]
f([2,2,2,2,2,2,2,2,2], 10) = [2,2,2,2,2]
f([2,2,2,2,-2,-2,-2,-4,-2], -8) = [2,2,-2,-2,-2,-4,-2]
f([-2,-4,-2], -6) = [-4,-2] OR [-2,-4]
f([2,2,2,4,2,-2,-2,-2,-4,-2], 0) = [2,2,2,4,2,-2,-2,-2,-4,-2]
(Inchangé)
f([], 0) = []
(Cas à somme nulle inchangé)
Exemples (Falsy, toute valeur non matricielle cohérente):
Impossible de faire l'affaire: f([-2,4,6,-8], 3) = falsy (E.G. -1)
Cas à somme nulle: f([], non-zero number) = falsy (E.G. -1)
- Remarque: toute valeur comme
[-1]
ne peut pas être valide pour la falsification, car il s'agit d'une sortie véridique potentielle.
Règles:
- L'entrée peut être prise sous forme de tableau ou sous forme de liste d'arguments, le dernier ou le premier étant
x
. - La sortie peut être n'importe quelle liste délimitée d'entiers. EG
1\n2\n3\n
ou[1,2,3]
. - Toute valeur peut être utilisée comme indicateur de falsification, autre qu'un tableau d'entiers.
- Votre code doit maximiser la taille du tableau final, l'ordre n'a pas d'importance.
- EG Pour les
f([3,2,3],5)
deux[2,3]
et[3,2]
sont également valables. - Par exemple,
f([1,1,2],2)
vous ne pouvez revenir[1,1]
que[2]
plus court.
- EG Pour les
- La somme de
a
et la valeur dex
seront inférieures2^32-1
et supérieures à-2^32-1
. - Il s'agit du code-golf , le plus petit nombre de victoires d'octets.
- S'il existe plusieurs sous-réseaux de même taille qui sont valides, il n'est pas acceptable de les afficher tous. Vous devez en choisir un seul et le sortir.
Faites-moi savoir si cela a été publié, je ne l'ai pas trouvé.
Messages que j'ai trouvés comme ceci : liés mais fermés , ...