Ein Array von ganzen Zahlen gegeben, a
das n ganze Zahlen und eine einzelne ganze Zahl enthält x
; Entfernen Sie die geringste Anzahl von Elementen aus a
, um die Summe von a
gleich zu machen x
. Wenn sich keine Kombinationen von a
bilden können x
, wird ein falscher Wert zurückgegeben.
Wie in einem Kommentar erwähnt, ist dies die maximale Menge mit einer Summe von x , entschuldigen Sie mein geringeres mathematisches Gehirn. Ich habe seit dem College viele Begriffe vergessen.
Beispiele (Wahrheit):
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]
(Unverändert)
f([], 0) = []
(Unveränderter Nullsummenfall)
Beispiele (Falsy, jeder konsistente Nicht-Array-Wert):
Es ist unmöglich, einen Fall zu machen: f([-2,4,6,-8], 3) = falsy (E.G. -1)
Nullsummenfall: f([], non-zero number) = falsy (E.G. -1)
- Hinweis: Jeder Wert wie
[-1]
kann nicht für falsch gelten, da es sich um eine potenzielle wahrheitsgemäße Ausgabe handelt.
Regeln:
- Die Eingabe kann in Array-Form oder als Liste von Argumenten erfolgen, wobei das letzte oder erste Argument vorliegt
x
. - Die Ausgabe kann eine durch Trennzeichen getrennte Liste von ganzen Zahlen sein. EG
1\n2\n3\n
oder[1,2,3]
. - Jeder Wert kann als falscher Indikator verwendet werden, außer als Array von Ganzzahlen.
- Ihr Code muss die Größe des Endarrays maximieren, die Reihenfolge spielt keine Rolle.
- EG Für
f([3,2,3],5)
beide[2,3]
und[3,2]
gelten gleichermaßen. - EG Denn
f([1,1,2],2)
Sie können nur so zurückkehren,[1,1]
wie[2]
es kürzer ist.
- EG Für
- Sowohl die Summe
a
als auch der Wert vonx
werden kleiner als2^32-1
und größer als sein-2^32-1
. - Dies ist Code-Golf , die niedrigste Anzahl an Bytes gewinnt.
- Wenn mehrere Subarrays derselben Größe gültig sind, ist es nicht akzeptabel, alle auszugeben. Sie müssen eine einzelne auswählen und diese ausgeben.
Lassen Sie mich wissen, wenn dies gepostet wurde, ich konnte es nicht finden.
Beiträge fand ich wie folgt : Verwandte aber geschlossen , ...
quelle
Antworten:
Brachylog , 8 Bytes
Probieren Sie es online!
Monatliche Brachylog-Antwort. Gibt zurück,
false.
wenn es nicht möglich ist.Erläuterung
quelle
Python 2 ,
108104 BytesProbieren Sie es online!
-4 Bytes, danke an Jonathan Allan
Python 2 ,
108106 BytesProbieren Sie es online!
-2 Bytes, danke an Janathan Frech
quelle
range(-len(a),1)
und verwenden-l
, um 2 zu speichern, aberlambda a,n:[x for l in range(len(a)+1)for x in combinations(a,l)if sum(x)==n][-1]
4.05AB1E , 9 Bytes
Probieren Sie es online!
quelle
Japt
-h
, 11 BytesProbieren Sie es online!
quelle
Pyth , 8 Bytes
8-Byte ( Try it! ) - Gibt nur eine mögliche Lösung aus. Bei unlösbaren Eingaben wird nichts an STDOUT ausgegeben, was eine leere Zeichenfolge ist, was in Pyth technisch gesehen falsch ist, sondern an STDERR. Vielen Dank an FryAmTheEggman , der dies vorgeschlagen hat (STDERR ignoriert und sich nur auf die STDOUT-Ausgabe konzentriert) und somit 1 Byte gespart hat.
9-Byte ( Try it! ) - Gibt nur eine mögliche Lösung aus, die standardmäßig in eine Singleton-Liste eingeschlossen ist (z
([1...10], 10) -> [[1,2,3,4]]; ([], 0) -> [[]]
. B. ). Bei unlösbaren Eingaben wird zurückgegeben[]
, was in Pyth falsch ist.10-byter ( Try it! ) - Für eine klarere Ausgabe, ohne die Singleton-Listenregel zu verwenden und
0
stattdessen[]
einen falschen Wert zu verwenden.Erläuterung
Zunächst berechnet der Code den Powerset der Eingabeliste (alle möglichen geordneten Untersammlungen davon). Dann werden nur die Sammlungen gespeichert, deren Summe der eingegebenen Nummer entspricht. Es ist zu beachten, dass die Sammlungen von der kürzesten bis zur längsten erstellt werden, sodass wir uns auf die letzte konzentrieren. So erhalten Sie es:
lst[-1:]
anstelle vonlst[-1]
Fehlern zu vermeiden aus für unlösbare Eingänge geworfen.quelle
[]
ist falsch? Ordentlich. Warum macht Pyth das[]
?f([], 0) = []
?Gelee , 7 Bytes
Probieren Sie es online!
Ausgabe über TIO geklärt.
quelle
Perl 6 ,
3837 BytesProbieren Sie es online!
Curry-Funktion.
quelle
;
überhaupt notwendig?$^x
mit$_
.)Brachylog , 4 Bytes
Probieren Sie es online!
Fast gleichbedeutend mit Fatalizes
h⊇.+~t?∧
, nur viel kürzer, dank der Kompositionsfunktion für Prädikate, die laut dem Bearbeitungsverlauf der Referenz bis zum 8. Januar noch in Bearbeitung war und die Antwort um mehr als zwei Monate verzögerte.⟨⊇+⟩
ist ein Sandwich , das erweitert wird{[I,J]∧I⊇.+J∧}
, wobei die Klammern in diesem Fall irrelevant sind, da sich das Sandwich sowieso in einer eigenen Zeile befindet.Eine weitaus weniger dramatische Transformation der Antwort von Fatalize, die dieselben Prädikate mit denselben Variablen verwendet, jedoch ein Byte kürzer aus der unterschiedlichen Organisation hervorgeht:
Brachylog , 7 Bytes
Probieren Sie es online!
(Wenn jemand etwas Seltsames sehen möchte, setzen Sie einen der Unterstriche in den Testfällen in Bindestriche.)
quelle
Pyth , 14 Bytes
Probieren Sie es online!
quelle
Sauber , 89 Bytes
Probieren Sie es online!
Definiert die Funktion, die
$ :: Int -> [Int] -> (Maybe [Int])
zurückgibt,Nothing
wenn keine geeignete Kombination von Elementen vorhanden ist(Just [elements...])
.quelle
JavaScript (ES6), 108 Byte
Übernimmt die Eingabe als
(array)(n)
. Gibt entweder ein Array oder zurückfalse
.Probieren Sie es online!
quelle
Das fing cool und klein an, aber Randfälle haben mich erwischt. Was auch immer passiert, ich bin stolz auf die Arbeit, die ich in diese Sache gesteckt habe.
Python 3 ,
169 161154 BytesProbieren Sie es online!
quelle
range(x)
generiert habe(0...x-1)
? Sie habenrange(len(a))
also nicht die Möglichkeit, das Array unverändert zu lassen?if a==[] and x==0
benutzenif sum(a)==x
. Dann können Sie auch entfernen+1
ausrange
.R ,
10080 BytesProbieren Sie es online!
20 Bytes gespart dank digEmAll
Gibt
FALSE
für unmögliche Kriterien zurück.quelle
Attache , 28 Bytes
Probieren Sie es online!
Alternativen
34 Bytes :
f[x,y]:=({y=Sum@_}\Radiations@x)@0
30 Bytes :
First@${y&`=@Sum\Radiations@x}
29 Bytes :
{(_&`=@Sum\_2)@0}#/Radiations
29 Bytes :
${({y=Sum@_}\Radiations@x)@0}
29 Bytes :
`@&0@${y&`=@Sum\Radiations@x}
29 Bytes :
{_}@@${y&`=@Sum\Radiations@x}
Erläuterung
quelle
APL (NARS), 65 Zeichen, 130 Byte
↓ wird verwendet, weil das erste Element der Menge von Mengen eine leere Menge wäre (hier ⍬ Zilde), die man eliminieren möchte, weil es so scheint, als ob + / ⍬ Null ist ...
Für nicht gefunden oder Fehler würde es ⍬ oder im Drucktext zurückgeben:
Prüfung:
quelle