交差シーケンス
正の整数のリストが与えられ、各要素が前の要素以上である場合A
、それを増加シーケンスと呼びます。そして、各要素が前の要素以下の場合、それを減少シーケンスと呼びます。
いくつかの増加するシーケンス:
[1,2,4,7]
[3,4,4,5]
[2,2,2]
[]
いくつかの減少するシーケンス:
[7,4,2,1]
[5,4,4,3]
[2,2,2]
[]
交差配列は、 2つの互いに素サブ一つ増加配列および他のA減少シーケンスに分解することができるリストです。
たとえば、リスト:
[3,5,2,4,1]
次のように分解できるため、交差シーケンスです。
[3, 4 ]
[ 5,2, 1]
ここ[3,4]
で、は増加するサブシーケンスで[5,2,1]
あり、は減少するサブシーケンスです。このような(増加、減少)サブシーケンスのペアを交差シーケンスの分解と呼びます。
リスト:
[4,5,2,1,3]
交差シーケンスではありません。それを増加するサブシーケンスと減少するサブシーケンスに分解する方法はありません。
あなたの仕事は、正の整数のリストを入力として受け取るプログラム/関数を書くことです。交差シーケンスの場合は、分解の1つで2つのリストを返します。リストが交差シーケンスでない場合は、一貫性のある「誤った」値。
これはコードゴルフです。各言語で最も短いプログラム/機能が勝者です。
ルール:
- 入力は柔軟です。
- 通常の抜け穴は禁止されています。
- 入力を分解する有効な方法が複数ある場合は、そのうちの1つまたはすべてを出力できます。
- 分解の出力フォーマットは柔軟です。しかし、2つのサブシーケンスの違いに関しては明確でなければなりません。
- 入力が交差シーケンスではないことを示すために、一貫した出力値を使用できます。交差シーケンスの出力と比較して明確である限り。答えには偽の値を指定する必要があります。
テストケース:
False
非交差シーケンスを示すために使用:
[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]
。現在のテストケースは、あなたが離れて取得してみましょう>=
/ <
、それは本当にあるべきとき>=
/ <=
。