Python 3 , 113 62 Bytes
for i in[1]*3:x|={a+b for a in x for b in x}
while{i+1}&x:i+=1
Hier x
ist die Eingabe als eine Menge von Ints und i
ist die Ausgabe.
(Danke: Erik der Outgolfer, Mr. Xcoder, Lynn)
Kennzeichen
quelle
quelle
x=0,*x
Spart 1 Byte. Besser noch,x+=0,
speichert 2.Antworten:
Gelee , 12 Bytes
Probieren Sie es online!
Es dauert durchschnittlich ~ 3,7 Sekunden, um alle Testfälle auf TIO auf meinem Telefon auszuführen. Es ist also überraschenderweise ziemlich schnell.
Erläuterung
quelle
Haskell,
5650 BytesProbieren Sie es online!
Ein Brute-Force-Ansatz. Fügen Sie
0
der Liste der Münzen hinzu und probieren Sie alle Kombinationen von 8 Picks. Suchen Sie die erste Zahln
, die nicht der Summe der Picks entspricht, und kehren Sie zurückn-1
.Nimmt ungefähr 5m30s für
[1, 2, 5, 13, 34, 89, 233, 610]
meine 7-jährige Laptop-Hardware.Edit: -6 Bytes dank @ Ørjan Johansen
Eine noch kürzere Version (-2 Bytes, nochmals dank @ Ørjan Johansen) ist
Haskell, 48 Bytes
Es verwendet jedoch erheblich mehr Speicher und führt zu starkem Paging auf meinem Computer und wird nicht "innerhalb weniger Minuten" beendet.
quelle
mapM(0:)$c<$c
. (EigentlichmapM(:0:c)c
sollte es funktionieren, aber für den gegebenen Testfall läuft die Zeit bei TIO aus.)Gelee , 9 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Żṗ8§ḟ’$Ṃ
spart ein Byte, aber ich bin nicht sicher, ob 8,5 Minuten als ein paar zählen .Wolfram Language (Mathematica) , 53 Byte
Probieren Sie es online!
quelle
JavaScript (ES6),
100 88 8076 BytesDies ist im Wesentlichen eine Brute-Force-Suche, die jedoch durch Beschneiden verbessert wird, um sie zu beschleunigen. Die durchschnittliche Ausführungszeit für die Testfälle liegt bei TIO nahe 1 Sekunde.
Es wird davon ausgegangen, dass das Eingabearray vom höchsten zum niedrigsten sortiert ist.
Probieren Sie es online!
Kommentiert
quelle
Python 2 , 145 Bytes
Probieren Sie es online!
quelle
Pari / GP , 57 Bytes
Probieren Sie es online!
quelle
Python 2 ,
125115111 BytesProbieren Sie es online!
Erwartet eine Liste von Ganzzahlen als Eingabe.
Erläuterung:
quelle
Perl6,
656341 Bytes (3937 Zeichen)Probieren Sie es online!
Dies ist ein anonymer Block, der seine Daten als Array weitergibt. Das
(0,|@_)
ist ein schneller Weg , ein hinzufügen0
zu@_
, und obwohl es zweimal getan, es ist immer noch ein bisschen kürzer als@_.push: 0;
die dann Räume benötigen würde , nachdem die_
. Dies ist ein Brute-Force-Ansatz, der sich ein wenig auf die Tatsache stützt, dass es sich um 8 Kombinationen handelt. Nach dem Kreuzaddieren wird eine anonyme Liste für sequentielle Werte erstellt. Bei mathematischen Operatoren werden Listen nach ihrer Länge ausgewertet, sodass -1 die doppelte Pflicht hat: Berücksichtigung der 0 und Erzwingen von Int.Dies kann seine süße Zeit in Anspruch nehmen, aber durch eine oder beiden Wechsel
(0,|@_)
zu(0,|@_.unique)
vor dem erstenfor
kann es erheblich beschleunigt werden. Das erhöht die Punktzahl um +7 (Laufzeit <60s) oder +14 (Laufzeit <10s), wenn Sie der Meinung sind, dass die erste zu langsam ist (ich habe dies für den verknüpften Code getan, um Zeitüberschreitungen nach 60 Sekunden zu vermeiden).Edit: JoKing in den Kommentaren verbessert es (gleiche Idee, Kreuz hinzufügen, dann das letzte aufeinanderfolgende Ergebnis zurückgeben) zu erstaunlichen 39 Zeichen (41 Bytes):
Probieren Sie es online!
Die abschließende Tabellierung benötigt keine 0 und spart ein paar Bytes, indem nur einmal eine 0 hinzugefügt werden muss. Die
xx 3
imitiert die for-Schleife (noch Käse auf den Münzen ist eine Potenz von 2). Dasfirst
Sub gibt die erste Zahl in der unendlichen Liste zurück0..*
(dies^Inf
ist ebenfalls möglich, spart jedoch keinen Platz), die+1
nicht Mitglied der Cross-Added-Liste ist. Wie bei mir ist es langsam, also addiere +7 für aunique
nach dem ersten Gleichgestellten, wenn du denkst, dass es für Richtlinien zu langsam ist.quelle
unique
nicht benötigt, aber es beschleunigt es sehrxx
. Ich wusste, dass es eine Möglichkeit geben musste, die endgültige Tabellierung mit festgelegten Funktionen in viel kürzerer Zeit durchzuführen, aber mein Gehirn funktionierte nicht.xx 1
sollte seinxx 3
^∞
(1...*∉@_)-1
anstatt sie zu verwendenfirst
(was genau die gleiche Methode ist, die ich hier verwendet habe )JavaScript (Node.js) ,
171145115 ByteProbieren Sie es online! Port von @ Marks Python 3 Antwort. 108 Bytes in Firefox 30-57:
quelle
Wolfram Language (Mathematica) , 46 Byte
Probieren Sie es online!
Brute-Force-Ansatz: Prüft, ob ganze Zahlen aufwärts zählen, bis ein Wert erreicht ist, der mit 8 Münzen nicht bezahlt werden kann. Sehr, sehr langsam (tio times out), aber ich bin mir ziemlich sicher, dass der Zustand korrekt ist.
quelle
Sauber , 161 Bytes
Probieren Sie es online!
quelle