Thử thách:
Đưa ra một danh sách các danh sách số nguyên không trống, trả về một danh sách các bộ dữ liệu có dạng sau: Các bộ danh sách đầu tiên bắt đầu với mỗi phần tử của danh sách đầu tiên theo sau là phần tử đầu tiên của mỗi danh sách tiếp theo, do đó, bộ dữ liệu thứ i sẽ là [ith element of first list, first element of second list, ... , first element of last list]
. Ví dụ:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => [[1, 4, 7], [2, 4, 7], [3, 4, 7], ...
Sau đó, làm bộ dữ liệu của biểu mẫu [last element of first list, ith element of second list, first element of third list, ..., first element of last list]
, vì vậy trong ví dụ của chúng tôi sẽ là:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => ..., [3, 4, 7], [3, 5, 7], [3, 6, 7], ...
Tiếp tục với từng danh sách còn lại, cho đến khi bạn nhận được [last element of first list, ..., last element of second to last list, ith element of last list]
:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] => ..., [3, 6, 7], [3, 6, 8], [3, 6, 9]]
Đầu ra đầy đủ như sau:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]] =>
[[1, 4, 7], [2, 4, 7], [3, 4, 7], [3, 5, 7], [3, 6, 7], [3, 6, 8], [3, 6, 9]]
Một số nồi hơi cho biện pháp tốt:
- Nếu bạn muốn đầu vào là danh sách các chuỗi hoặc danh sách các số nguyên dương, thì tốt. Câu hỏi là về thao túng danh sách, không phải về những gì trong danh sách.
- Đầu vào và đầu ra có thể ở bất kỳ định dạng chấp nhận được .
- Một chương trình hoặc chức năng đầy đủ được cho phép.
- Các sơ hở tiêu chuẩn không được phép theo mặc định.
- Câu hỏi này là mã golf, vì vậy, số byte thấp nhất sẽ thắng.
Ví dụ:
[] => [[]] (or an error, thanks to ngn for correcting the output in this case)
[[1]] => [[1]]
[[1, 2], [3, 4], [5]] => [[1, 3, 5], [2, 3, 5], [2, 4, 5]]
[[1], [2], [5, 6], [3], [4]] => [[1, 2, 5, 3, 4], [1, 2, 6, 3, 4]]
[[1, 2, 3], [4, 5]] => [[1, 4], [2, 4], [3, 4], [3, 5]]
[[1, 2, 3], []] => unspecified behavior (can be an error)
[[3, 13, 6], [9, 2, 4], [5, 10, 8], [12, 1, 11], [7, 14]] =>
[[3, 9, 5, 12, 7], [13, 9, 5, 12, 7], [6, 9, 5, 12, 7], [6, 2, 5, 12, 7],
[6, 4, 5, 12, 7], [6, 4, 10, 12, 7], [6, 4, 8, 12, 7], [6, 4, 8, 1, 7],
[6, 4, 8, 11, 7], [6, 4, 8, 11, 14]]
[[16, 8, 4, 14, 6, 7, 10, 15], [11, 1, 12, 2, 19, 18, 9, 3], [13, 5, 17]] =>
[[16, 11, 13], [8, 11, 13], [4, 11, 13], [14, 11, 13], [6, 11, 13],
[7, 11, 13], [10, 11, 13], [15, 11, 13], [15, 1, 13], [15, 12, 13], [15, 2, 13],
[15, 19, 13], [15, 18, 13], [15, 9, 13], [15, 3, 13], [15, 3, 5], [15, 3, 17]]
Nếu bất cứ ai có một tiêu đề tốt hơn, cho tôi biết.
[[]]
có một tuple trống duy nhất với một mục nhập từ mỗi danh sách con (không). Có lẽ thật khó chịu khi yêu cầu các chương trình xuất ra chính xác điều này, vì vậy tôi sẽ nói rằng điều đó là không cần thiết.
[]
, nói đúng ra là một danh sách trống các danh sách không trống nhưng đầu ra không rõ ràng giữa []
và [[]]
nếu đó là đầu vào được phép. ( "Danh sách đầu tiên các bộ bắt đầu với mỗi phần tử của danh sách đầu tiên ..." - không có danh sách đầu tiên, vì vậy chúng tôi đang thực hiện -> []
)
[]
phải là [[]]
. Ví dụ, số lượng bộ dữ liệu đầu ra là sum(inner list lengths) - length of outer list + 1
trong trường hợp trống 1
, đó là độ dài [[]]
nhưng không phải là độ dài của []
. Đây là một chút vấn đề về phạm vi mặc dù ...
[] => []
thực sự nên[] => [[]]
nhưng không thể tìm thấy những từ để giải thích tại sao.