Hãy nói rằng chúng tôi có một Set S
trong đó có một vài tập con:Tạo tất cả các tập con "độc đáo" của một tập (không phải là một Powerset)
- [a,b,c]
- [a,b]
- [c]
- [d,e,f]
- [d,f]
- [e]
Cũng giả sử rằng S chứa sáu yếu tố duy nhất: a, b, c, d, e
và f
.
Làm cách nào chúng tôi có thể tìm thấy tất cả các tập hợp con có thể có của S
có chứa từng thành phần độc đáo của S
chính xác một lần?
Kết quả của hàm/phương pháp nên được một cái gì đó như thế:
[[a,b,c], [d,e,f]];
[[a,b,c], [d,f], [e]];
[[a,b], [c], [d,e,f]];
[[a,b], [c], [d,f], [e]].
Có bất kỳ thực hành tốt nhất hoặc tiêu chuẩn nào cách để đạt được điều đó?
Tôi sẽ biết ơn về ví dụ về mã giả, Ruby hoặc Erlang.
Hoạt động tuyệt vời! Nhưng tôi thấy nó treo cho bất cứ điều gì bằng hoặc trên 10 mặt hàng. Bất kỳ ý tưởng tại sao? chạy các phân vùng ([1,2,3,4,5,6,7,8,9,10]) treo ruby – mbdev
Các bộ sưu tập liên quan nhận được lớn khá nhanh chóng - có 115975 phân vùng của một mảng 10 mục, vẫn còn nó chỉ mất một vài giây trên máy của tôi. Nếu bạn đang chạy điều này trong irb, sau đó nó sẽ cố gắng và hiển thị kết quả - không phải là một ý tưởng tốt! –
nó thực sự treo trong đường ray s và trong khi chạy dưới rspec từ RubyMine. Tôi đang chạy trên Mac chạy Lion. Vấn đề của tôi thực sự chuyên biệt hơn vấn đề này, vì vậy tôi đã đăng nó ở đây: http://stackoverflow.com/questions/9732944/get-all-possible-subsets-preserving-order – mbdev