Dato un array di numeri interi a
che contiene n numeri interi e un singolo numero intero x
; rimuovere il minor numero di elementi da a
per rendere la somma a
pari a x
. Se nessuna combinazione di a
può formare x
, restituisce un valore errato.
Come sottolineato in un commento, questo è il set massimo con una somma di x , scusa il mio cervello matematico minore. Ho dimenticato molti termini dal college.
Esempi (verità):
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]
(Invariato)
f([], 0) = []
(Caso invariato di somma zero)
Esempi (Falsy, qualsiasi valore coerente non array):
Caso impossibile da realizzare: f([-2,4,6,-8], 3) = falsy (E.G. -1)
Caso somma zero: f([], non-zero number) = falsy (E.G. -1)
- Nota: qualsiasi valore come
[-1]
non può essere valido per la falsità, in quanto è un potenziale output di verità.
Regole:
- L'input può essere preso in forma di matrice o come elenco di argomenti, l'ultimo o il primo essere
x
. - L'output può essere qualsiasi elenco delimitato di numeri interi. EG
1\n2\n3\n
o[1,2,3]
. - Qualsiasi valore può essere utilizzato come indicatore di falsa, diverso da una matrice di numeri interi.
- Il codice deve massimizzare la dimensione dell'array finale, l'ordine non ha importanza.
- EG per
f([3,2,3],5)
entrambi[2,3]
e[3,2]
sono ugualmente validi. - Ad esempio
f([1,1,2],2)
, puoi tornare solo[1,1]
perché[2]
è più breve.
- EG per
- Sia la somma di
a
che il valore dix
saranno minori di2^32-1
e maggiori di-2^32-1
. - Questo è code-golf , vince il conteggio di byte più basso.
- Se ci sono più sottoschiere della stessa dimensione che sono valide, è non accettabile uscita tutti loro. Devi sceglierne uno singolo e crearne uno.
Fammi sapere se questo è stato pubblicato, non sono riuscito a trovarlo.
Post che ho trovato in questo modo : correlati ma chiusi , ...