Kreuzungssequenzen
A
Nennen Sie eine Liste positiver Ganzzahlen eine aufsteigende Folge, wenn jedes Element größer oder gleich dem vorherigen ist. und nenne es eine abnehmende Sequenz, wenn jedes Element kleiner oder gleich dem vorherigen ist.
Einige zunehmende Sequenzen:
[1,2,4,7]
[3,4,4,5]
[2,2,2]
[]
Einige abnehmende Sequenzen:
[7,4,2,1]
[5,4,4,3]
[2,2,2]
[]
Eine Kreuzungssequenz ist eine Liste, die in zwei disjunkte Teilsequenzen zerlegt werden kann, eine eine zunehmende Sequenz und die andere eine abnehmende Sequenz.
Zum Beispiel die Liste:
[3,5,2,4,1]
ist eine Kreuzungssequenz, da sie zerlegt werden kann in:
[3, 4 ]
[ 5,2, 1]
wo [3,4]
ist die zunehmende Teilsequenz und [5,2,1]
ist die abnehmende Teilsequenz. Wir werden ein solches Paar von (zunehmenden, abnehmenden) Teilsequenzen eine Zerlegung der Kreuzungssequenz nennen.
Die Liste:
[4,5,2,1,3]
ist keine Kreuzungssequenz; Es gibt keine Möglichkeit, es in eine zunehmende und abnehmende Teilfolge zu zerlegen.
Ihre Aufgabe ist es, ein Programm / eine Funktion zu schreiben, die eine Liste positiver Ganzzahlen als Eingabe verwendet. und wenn es sich um eine Kreuzungssequenz handelt, geben Sie die beiden Listen in einer ihrer Zerlegungen zurück; oder ein konsistenter "Falsey" -Wert, wenn die Liste keine Kreuzungssequenz ist.
Das ist Code-Golf ; Das kürzeste Programm / die kürzeste Funktion in jeder Sprache ist der Gewinner.
Regeln:
- Die Eingabe ist flexibel.
- Die üblichen Lücken sind verboten.
- Wenn es mehrere gültige Möglichkeiten gibt, die Eingabe zu zerlegen, können Sie eine oder alle ausgeben.
- Die Ausgabeformatierung für die Zerlegung ist flexibel. es muss jedoch hinsichtlich der Unterscheidung zwischen den beiden Teilsequenzen eindeutig sein.
- Sie können einen beliebigen konsistenten Ausgabewert verwenden, um anzuzeigen, dass die Eingabe keine Kreuzungssequenz ist. solange es im Vergleich zur Ausgabe für eine Kreuzungssequenz eindeutig ist. Sie sollten den Falsey-Wert in Ihrer Antwort angeben.
Testfälle:
Verwenden False
, um nicht kreuzende Sequenzen anzuzeigen:
[3, 5, 2, 4, 1] => [3, 4], [5, 2, 1]
[3, 5, 2, 4, 4, 1, 1] => [3, 4, 4], [5, 2, 1, 1]
[7, 9, 8, 8, 6, 11] => [7, 8, 8, 11], [9, 6]
[7, 9, 8, 8, 6, 11] => [7, 9, 11], [8, 8, 6] # also valid
[7, 9, 8, 8, 6, 11] => [7, 8, 11], [9, 8, 6] # also valid
[7, 8, 9, 10, 20, 30] => [7, 8, 9, 20, 30], [10]
[7, 8, 9, 10, 20, 30] => [8, 9, 10, 20, 30], [7] # this is also valid
[5, 5, 5] => [5, 5, 5], []
[4, 5, 2, 1, 3] => False
[3, 4, 3, 4, 5, 2, 4] => False
[3, 5, 2, 4, 4, 1, 1]
. Mit den aktuellen Testfällen können Sie mit >=
/ davonkommen <
, wenn es wirklich >=
/ sein sollte <=
.