Trình tự cắt ngang
Đưa ra một danh sách các số nguyên dương A
, gọi nó là một chuỗi tăng nếu mỗi phần tử lớn hơn hoặc bằng phần tử trước; và gọi nó là một chuỗi giảm nếu mỗi phần tử nhỏ hơn hoặc bằng phần tử trước.
Một số trình tự tăng dần:
[1,2,4,7]
[3,4,4,5]
[2,2,2]
[]
Một số trình tự giảm dần:
[7,4,2,1]
[5,4,4,3]
[2,2,2]
[]
Một chuỗi qua là một danh sách có thể được phân tách ra thành hai subsequences rời nhau, một trong một chuỗi tăng và một khác chuỗi giảm.
Ví dụ: danh sách:
[3,5,2,4,1]
là một chuỗi chéo, vì nó có thể được phân tách thành:
[3, 4 ]
[ 5,2, 1]
ở đâu [3,4]
là tăng dần và [5,2,1]
là giảm dần. Chúng ta sẽ gọi một cặp như vậy (tăng, giảm) sau đó là sự phân tách của chuỗi chéo.
Danh sách:
[4,5,2,1,3]
không phải là một chuỗi chéo; không có cách nào để phân hủy nó thành một sự gia tăng và giảm dần.
Nhiệm vụ của bạn là viết một chương trình / hàm lấy đầu vào là danh sách các số nguyên dương; và nếu đó là một chuỗi chéo, trả về hai danh sách trong một trong các phân tách của nó; hoặc một số giá trị "falsey" nhất quán nếu danh sách không phải là một chuỗi chéo.
Đây là môn đánh gôn ; chương trình / chức năng ngắn nhất trong mỗi ngôn ngữ là người chiến thắng.
Quy tắc:
- Đầu vào là linh hoạt.
- Các sơ hở thông thường bị cấm.
- Nếu có nhiều cách hợp lệ để phân tách đầu vào, bạn có thể xuất một hoặc tất cả các cách đó.
- Định dạng đầu ra cho phân tách là linh hoạt; nhưng nó phải rõ ràng về sự khác biệt giữa hai phần sau.
- Bạn có thể sử dụng bất kỳ giá trị đầu ra nhất quán nào để chỉ ra rằng đầu vào không phải là một chuỗi chéo; miễn là nó không rõ ràng so với đầu ra cho bất kỳ chuỗi chéo nào. Bạn nên chỉ định giá trị falsey trong câu trả lời của bạn.
Các trường hợp thử nghiệm:
Sử dụng False
để chỉ ra các chuỗi không giao nhau:
[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]
. Các trường hợp thử nghiệm hiện tại cho phép bạn thoát khỏi >=
/ <
, khi nó thực sự phải là >=
/ <=
.