Wenn Sie eine Liste positiver Ganzzahlen haben, schreiben Sie Code, der die Länge der längsten zusammenhängenden Teilliste ermittelt, die ansteigt (nicht unbedingt). Dies ist die längste Unterliste, sodass jedes Element größer oder gleich dem letzten ist.
Zum Beispiel, wenn die Eingabe war:
Die am längsten aufsteigende Unterliste wäre , Sie würden also ausgeben .
Ihre Antwort wird bewertet, indem Sie die Quelle als eine Liste von Bytes nehmen und dann die Länge der am längsten wachsenden Unterliste dieser Liste ermitteln. Eine niedrigere Punktzahl ist das Ziel. Verbindungen werden zugunsten von Programmen mit weniger Gesamtbytes unterbrochen.
code-challenge
source-layout
Post Rock Garf Hunter
quelle
quelle
True
, ein Ersatz dafür zu sein,1
aber es kann sein. Sie sollten in der Lage sein, mit der leeren Liste umzugehen (Ausgabe ist natürlich 0).[] => 0
,[0] => 1
,[3,2,1] => 1
,[1,2,1,2] => 2
Antworten:
Pyth , Punktzahl 2 (8 Bytes)
Probieren Sie es hier aus!
Codepunkte
[108, 101, 102, 83, 73, 84, 46, 58]
. Eine andere kürzere Lösung hat dieleSI#.:
Punktzahl 3, aber die Codepunkte liegen[108, 101, 83, 73, 35, 46, 58]
tatsächlich sehr nahe an der Punktzahl 1.Das Neuanordnen eines Bits kannNevermindhelfen. Die eingebauten Teilzeichenfolgen.:
können nicht neu angeordnet werden. Daher muss die niedrigste Punktzahl 2 sein, wenn das Programm davon Gebrauch macht.Wie?
quelle
Haskell , Score 2,
6664616065 BytesProbieren Sie es online! (überprüft sich selbst).
Ich hätte nie gedacht, dass ich mit Haskell eine Punktzahl von 2 erreichen könnte, und doch bin ich hier!
Die Funktion
g
berechnet die Länge aller aufsteigenden Teilzeichenfolgen rekursiv.foldr1 max.g
Nimmt das Maximum dieser Längen (foldr1 max
entsprichtmaximum
, aber mit einer niedrigeren Punktzahl).quelle
1+a : b
nicht erforderlich, das sind also 62 Bytes.1
für die leere Liste zurück, in die er zurückkehren sollte0
JavaScript (Node.js) ,
Score 3,Score 2,53,46 Bytes,51,50 Bytes-7 Bytes danke @Arnauld
+5+4 Felder im Austausch mit -1 PunktenProbieren Sie es online!
Nimmt eine nicht leere Eingabe an. 61 Bytes, wenn leere Liste behandelt werden muss. Noch 2 Punkte.
Probieren Sie es online!
... oder 58, wenn die Rückgabe
false
erlaubt ist. Noch 2 Punkte.quelle
Schale , 5 Bytes , Punktzahl = 2
Probieren Sie es online!
Es ist unwahrscheinlich, dass Husk eine Punktzahl von weniger als 2 erreicht, da
ġ
1 einen wirklich hohen Codepunkt hat und etwas vor sich liegen muss, um das Maximum und die Länge zu erreichen. Es könnte versucht werden, mehrere Funktionen zu verwenden,\n
jedoch vor allen Hilfsfunktionen, die einen wirklich niedrigen Codepunkt haben. Daher würde alles, was danach erfolgt, eine zunehmende Byte-Sequenz von mindestens Länge 2 erzeugen.1: Dies scheint der beste Weg zu sein, den Vergleichsoperatoren verwenden müssten, um den verschiedenen Split-Funktionen wie
↕
(span
) zu folgen .Erläuterung
quelle
Retina 0.8.2 , 40 Bytes, Punktzahl 3
Probieren Sie es online!Link schließt sich als Bytecode als Eingabe ein. Erläuterung:
In Unary konvertieren.
Auf abnehmende Paare aufteilen.
Löschen Sie die Ziffern.
Sortieren Sie die Kommas in umgekehrter Reihenfolge. (Ich würde das normalerweise schreiben als
O^
aber aus offensichtlichen Gründen kann ich das hier nicht tun.)Zählen Sie den längsten Komma-Lauf und addieren Sie einen, um die endgültige Zahl einzuschließen.
quelle
Japt
-h
, 6 Bytes, Punktzahl 2Denken Sie nicht, dass eine Punktzahl von 1 möglich ist. Sollte auch mit Strings & Character Arrays funktionieren.
Versuch es - inklusive Testfall ist der Charcode der Lösung.
Erläuterung
quelle
MATL , Score 2, 13 Bytes
Die Eingabe kann sein:
MATL verwendet ASCII-Codierung. Die Codepunkte des obigen Codes sind
Probieren Sie es online!
Erläuterung
quelle
Pascal (FPC) , Punktzahl 2
111 Bytes
Probieren Sie es online!
Nimmt eine nicht leere Eingabe an. Zahlen werden aus der Standardeingabe entnommen und durch Leerzeichen getrennt.
quelle
Gelee , 8 Bytes , Punktzahl 2
Es gibt wahrscheinlich irgendwie eine Lösung mit Punktzahl 1 ...
Probieren Sie es online!
Quellcode als Liste von Bytewerten:
Wie?
quelle
Perl 6 , Score 2, 46 Bytes
Probieren Sie es online!
Behandelt die leere Liste. Der ursprüngliche Code war:
Also nur 5 zusätzliche Bytes, um die Punktzahl auf 2 zu reduzieren.
Edit: Ah, ich habe herausgefunden, wie ich die Zuweisung entfernen kann , aber dann kann ich diese Punktzahl wegen der nicht unter 3 bringen
)]]
...Erläuterung:
quelle
[[&(*+*)]]
funktioniert das[+]
? Erstaunlich ...Z
und verwendenX
. Probieren Sie es online!{max 0,|.[[X..] ^$_ xx 2].map({+$_ if [<=] $_})}
05AB1E , Punktzahl 3 (9 Bytes )
Kann höchstwahrscheinlich eine Punktzahl von 2 sein.
Codepunkte der Programmbytes:
[140,1,90,100,80,125,233,9,103]
(zwei Unterlisten der Länge 3:[1,90,100]
und[80,125,233]
)Probieren Sie es online aus.
Erläuterung:
quelle
Java (JDK) , Score 3, 94 Bytes
Probieren Sie es online!
Port meiner (mit Vorschlägen von Arnauld) JS Antwort.
etu
inreturn
undhil
inwhile
machen es unmöglich, Golf zu spielen, um 2 zu erzielen.for
kann hier nicht verwendet werden, weil:;for
steigt auffor
Kann nicht am Anfang des Lambda-Körpers verwendet werden (Umfangseinschränkungen). Es ist möglich, es mit,{}
aber anscheinend mitwhile
spart Bytes zu schließen.quelle
\u
an einigen Stellen zu verwenden, aber dann müssen Sie00
von einer Ziffer gefolgt haben, die ohnehin 3 ist ...Powershell, Punktzahl 3, 44 Bytes
Testskript:
Ausgabe:
Erläuterung:
contiguous sub-list that is increasing (not strictly)
. Dann sortiert das Skript die Längen und nimmt ein letztes (Maximum)(...|sort)[-1]
.Powershell 6, Score 3, 43 Bytes
Das gleiche wie oben. Ein Unterschied:
sort -b 1
Abkürzung fürsort -Bottom 1
und bedeutet 1 Element vom Ende des sortierten Arrays . Wir brauchen also keinen Index[-1]
.quelle
Stax , 3 Punkte (15 Bytes)
Führen Sie es aus, und debuggen Sie es
quelle
Python 2 ,
Score 5, 87 BytesScore 2,1019392101 BytesProbieren Sie es online!
Hoppla! Dachte, dies war das erste Mal Code-Golf durch ...
quelle
m=1,o=[1]
Teils keine Bytes spart, wenn wir die Punktzahl reduzierenDyalog APL , Score 2, 20 Bytes
Probieren Sie es online!
quelle
Wolfram Language (Mathematica) , Punktzahl 3, 45 Bytes
Probieren Sie es online!
SequenceCases
undOrderedQ
für sich allein eine Punktzahl von 3 ergeben, so dass die Punktzahl nicht verbessert werden kann, ohne den Ansatz signifikant zu ändern.quelle
Max[Length/@SequenceCases[#,_?OrderedQ]]&
, aber_?Or
eine zunehmende Folge von Länge 4. (Wie es ist_?AnyCamelCaseCommand
.)Java (JDK), 126 Bytes, Ergebnis 6
Golf gespielt
Ungolfed
Eingang
quelle
byte
seinint
, dabyte
auf 8 Bit beschränkt wäre?Kotlin, Score 6, 119 Bytes
Versuchen Sie es online
Erläuterung
quelle
Kotlin, Score 4, 67 Bytes
Hauptidee ist: Transformiere jede ganze Zahl in die Länge zusammenhängender Teilsequenzen, die zunimmt (nicht streng). Maximum zurückgeben.
a.map{...}
- für jede ganze Zahl im Array tunif(it<p){i=0}
- Wenn die aktuelle Ganzzahl kleiner als eine vorherige Ganzzahl ist, setzen Sie den Zähler zurückp=it
- Aktuelle Ganzzahl in der vorherigen speichern(++i)
- Inkrementzähler und Rückgabewert des Ausdrucks.max()
- Maximale Länge erhaltenquelle
Ruby , 64 Bytes
Probieren Sie es online!
quelle
6
. Ihr Code behandelt auch nicht die leere Liste (wo die Ausgabe sein sollte0
)