Nhiệm vụ
Viết chương trình hoặc hàm có đầu vào là danh sách / mảng X các số nguyên và đầu ra của nó là danh sách các bộ số nguyên Y , sao cho mỗi phần tử e trong mỗi bộ Y [ i ], X [ e ] = i và sao cho tổng số phần tử trong các tập hợp trong Y bằng với số phần tử trong X .
(Về cơ bản, đây là thao tác tương tự như đảo ngược hashtable / dictionary, ngoại trừ áp dụng cho mảng thay thế.)
Ví dụ
Các ví dụ này giả định lập chỉ mục dựa trên 1, nhưng bạn có thể sử dụng lập chỉ mục dựa trên 0 thay vì nếu bạn thích.
X Y
[4] [{},{},{},{1}]
[1,2,3] [{1},{2},{3}]
[2,2,2] [{},{1,2,3}]
[5,5,6,6] [{},{},{},{},{1,2},{3,4}]
[6,6,5,5] [{},{},{},{},{3,4},{1,2}]
Làm rõ
- Bạn có thể đại diện cho một tập hợp như một danh sách, nếu bạn muốn. Nếu bạn làm như vậy, thứ tự các yếu tố của nó không quan trọng, nhưng bạn có thể không lặp lại các yếu tố.
- Bạn có thể sử dụng bất kỳ định dạng I / O rõ ràng hợp lý nào; ví dụ: bạn có thể tách các thành phần của một tập hợp bằng dấu cách và chính các tập hợp với dòng mới.
- Y nên có độ dài chính xác và ít nhất đủ dài để có tất cả các phần tử của X là các chỉ mục mảng. Tuy nhiên, nó có thể dài hơn phần tử tối đa của X (các phần tử phụ sẽ là các tập hợp trống).
- Tất cả các phần tử của X sẽ là các chỉ số mảng hợp lệ, tức là các số nguyên không âm nếu bạn sử dụng lập chỉ mục dựa trên 0 hoặc các số nguyên dương nếu bạn sử dụng lập chỉ mục dựa trên 1.
Điều kiện chiến thắng
Là một thách thức mã golf , ngắn hơn là tốt hơn.
[5,5,6,6]
và [6,6,5,5]
có thể giống hệt nhau không?
[5,5,6,6]
và [6,6,5,5]
không thể có đầu ra giống hệt nhau, nhưng đầu ra cho [5,5,6,6]
cũng có thể có, ví dụ , [{},{},{},{},{2,1},{4,3}]
.
[{0},{0},{0},{0},{1,2},{3,4}]
là đầu ra hợp lệ cho [5,5,6,6]
?