Điều tôi muốn làm là xử lý n bộ, trong khi mã tôi cung cấp bên dưới hoạt động với 4 bộ chính xác.Cho một mảng có kích thước y, chứa các mảng có kích thước n, làm thế nào tôi có thể trả về tất cả các kết hợp logic bằng Ruby?
def show_combinations
@combos = []
['A', 'no A'].each do |a|
['B', 'no B'].each do |b|
['C', 'no C'].each do |c|
['D', 'no D'].each do |d|
@combos << [a, b, c, d]
end
end
end
end
end
Làm thế nào tôi có thể cấu trúc mã sau này để đối phó với các tình huống sau: Với tôi có một loạt các kích thước y chứa mảng kích thước n, tôi muốn trả lại tất cả các kết hợp. Điều quan trọng cần lưu ý là chỉ có một mục trong mỗi mảng phụ có thể có trong kết quả. (Chẳng hạn như "Hồ sơ hoàn thành" cũng không thể có trong kết quả với "Không hồ sơ hoàn thành")
Bối cảnh:
Một người sử dụng có thể có một số nhiệm vụ: ví dụ, "Toàn bộ hồ sơ" hoặc "Thiết lập Email "hoặc bất cứ điều gì. Những nhiệm vụ có thể được biểu diễn như thế này:
@task_states = [["Completed Profile, NOT Completed Profile"], ["Set up Email", "NOT set up Email"]]
Sau đó, đi qua @task_states vào phương pháp, kết quả sẽ được này:
[
["Completed Profile", "Set up Email"],
["Completed Profile", "NOT set up Email"],
["NOT Completed Profile", "Set up Email"],
["NOT Completed Profile", "NOT Set up Email"]
]
Vì vậy, một mảng của mảng đại diện cho tất cả các kết hợp. Rõ ràng là "Hồ sơ đã hoàn thành" cũng không được nằm trong cùng một mảng với "Hồ sơ chưa hoàn thành", v.v.
Cảm ơn!
[Kết hợp mảng #] (http://ruby-doc.org/core-2.4.1/Array.html#method-i-combination) hoặc [Array # repeat_combination] (http: // ruby-doc. org/core-2.4.1/Array.html # method-i-repeat_combination) có tốt không? –
Bạn có nghĩa là sản phẩm Descartes của các mảng không? –