Cho nhiều tập hợp, ví dụ s1={2,3,7}
, s2={1,2,4,7,8}
và s3={4,7}
, sơ đồ Venn trực quan hóa từng bộ bằng một đường cong kín và các phần tử nằm bên trong hoặc bên ngoài chu vi của đường cong, tùy thuộc vào việc chúng có phải là phần tử của tập hợp hay không. Bởi vì tất cả các phần tử tập hợp chỉ xuất hiện một lần trong biểu đồ Venn, các đường cong đại diện cho mỗi bộ cần chồng lấp nếu một phần tử có mặt trong nhiều bộ. Chúng tôi gọi mỗi cái như vậy chồng lên nhau một ô của sơ đồ Venn.
Giải thích này có thể hơi khó hiểu, vì vậy hãy xem xét một ví dụ.
Thí dụ
Một sơ đồ Venn cho bộ s1
, s2
và s3
có thể trông như thế này:
Các tế bào của biểu đồ Venn này được (đọc từ trên xuống dưới, từ trái qua phải) {1,8}
, {2}
, {7}
, {4}
, {3}
, {}
và {}
.
Trong thực tế, người ta thường chỉ gặp các sơ đồ Venn gồm hai hoặc ba bộ, bởi vì biểu diễn của sơ đồ Venn gồm bốn hoặc nhiều bộ không rõ ràng. Tuy nhiên, chúng tồn tại, ví dụ như trong sáu bộ:
CC BY-SA 3.0, https: //commons.wik mega.org/w/index.php?curid=1472309
Nhiệm vụ
Cho một tập hợp các số nguyên dương không trống trong bất kỳ biểu diễn hợp lý nào, trả về tập hợp các ô của sơ đồ Venn của bộ đầu vào. Cụ thể, không cần đại diện đồ họa là cần thiết.
- Bạn có thể viết một chương trình đầy đủ hoặc một chức năng.
- Bạn có thể trả về nhiều tập hợp trống vì có các ô trống (tức là danh sách tất cả các ô) thay vì chỉ một tập hợp trống (tức là tập hợp các ô).
- Một số cách hợp lý đầu vào cho ví dụ trên bao gồm nhưng không giới hạn ở
{{2,3,7},{1,2,4,7,8},{4,7}}
,[[2,3,7],[1,2,4,7,8],[4,7]]
,"2,3,7;1,2,4,7,8;4,7"
hoặc"2 3 7\n1 2 4 7 8\n4 7"
. Nếu nghi ngờ liệu định dạng đầu vào bạn chọn có được chấp nhận hay không, vui lòng hỏi trong một nhận xét. - Định dạng đầu ra của bạn phải phù hợp với định dạng đầu vào của bạn, nếu có thể. Lưu ý rằng quy tắc này yêu cầu định dạng của bạn để có thể hiển thị rõ ràng các bộ trống.
- Đây là môn đánh gôn , vì vậy hãy cố gắng sử dụng càng ít byte càng tốt trong ngôn ngữ bạn chọn. Để khuyến khích sự cạnh tranh trên mỗi ngôn ngữ thay vì giữa các ngôn ngữ, tôi sẽ không chấp nhận câu trả lời.
Các trường hợp thử nghiệm
Dưới đây là một số đầu vào cùng với đầu ra có thể:
input -> output
{{2,3,7},{1,2,4,7,8},{4,7}} -> {{1,8},{2},{7},{4},{3},{}} (or {{1,8},{2},{7},{4},{3},{},{}})
{{1,2,3},{4,5,6},{7,8,9}} -> {{1,2,3},{4,5,6},{7,8,9},{}}
{{}} -> {{}}
{{1,2,3},{1,2}} -> {{1,2},{3},{}}
{{4,3,8},{1,2,9,3},{14,7,8,5},{6,11,3,8},{10},{9,4,3,7,10}} -> {{6,11},{10},{4},{3},{8},{5,14},{1,2},{9},{7},{}}
{{2,3,4,7},{},{1,3,7,5,6},{2,3,7,5},{7,2,4,3,6},{1,4,5}} -> {{},{4},{2},{7,3},{1},{6},{5}}
{{1,2,3,4},{1,2,5,6},{1,3,5,7}} -> {{4},{3},{2},{1},{6},{5},{7}}
{{1,2,3},{4,5,6},{7,8,9},{},{},{},{}}
?