Cartesian product of two or more lists: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 2,917: | Line 2,917: | ||
=={{header|Rust}}== |
=={{header|Rust}}== |
||
<lang rust> |
<lang rust>fn cartesian_product(lists: &Vec<Vec<u32>>) -> Vec<Vec<u32>> { |
||
⚫ | |||
fn cartesian_product(lists: &List) -> List { |
|||
⚫ | |||
if lists.len() < 2 || lists.iter().any(|x| x.len() == 0) { |
|||
⚫ | |||
⚫ | |||
let mut list_iter = lists.iter(); |
let mut list_iter = lists.iter(); |
||
Line 2,932: | Line 2,927: | ||
} |
} |
||
for l in list_iter { |
for l in list_iter { |
||
let mut tmp |
let mut tmp = vec![]; |
||
for r in res { |
for r in res { |
||
for &el in l { |
for &el in l { |
||
Line 2,944: | Line 2,939: | ||
res |
res |
||
} |
} |
||
fn |
fn main() { |
||
let cases = vec![ |
|||
print!("{{ "); |
|||
⚫ | |||
⚫ | |||
vec![vec![3, 4], vec![1, 2]], |
|||
vec![vec![1, 2], vec![]], |
|||
vec![vec![], vec![1, 2]], |
|||
⚫ | |||
⚫ | |||
⚫ | |||
print!(") "); |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
"{}\n{:?}\n", |
|||
case.iter().map(|c| format!("{:?}", c)).collect::<Vec<_>>().join(" × "), |
|||
cartesian_product(&case) |
|||
⚫ | |||
} |
} |
||
println!("}}"); |
|||
} |
|||
fn main() { |
|||
println!("{{1, 2}} x {{3, 4}}"); |
|||
⚫ | |||
println!("\n{{3, 4}} x {{1, 2}}"); |
|||
print_list(&cartesian_product(&vec![vec![3, 4], vec![1, 2]])); |
|||
println!("\n{{1, 2}} x {{}}"); |
|||
print_list(&cartesian_product(&vec![vec![1, 2], vec![]])); |
|||
println!("\n{{}} x {{1, 2}}"); |
|||
print_list(&cartesian_product(&vec![vec![], vec![1, 2]])); |
|||
println!("\n{{1776, 1789}} × {{7, 12}} × {{4, 14, 23}} × {{0, 1}}"); |
|||
⚫ | |||
println!("\n{{1, 2, 3}} × {{30}} × {{500, 100}}"); |
|||
⚫ | |||
println!("\n{{1, 2, 3}} × {{}} × {{500, 100}}"); |
|||
⚫ | |||
} |
} |
||
</lang> |
</lang> |
||
{{out}}<pre> |
{{out}}<pre>[1, 2] × [3, 4] |
||
[[1, 3], [1, 4], [2, 3], [2, 4]] |
|||
[3, 4] × [1, 2] |
|||
[[3, 1], [3, 2], [4, 1], [4, 2]] |
|||
[1, 2] × [] |
|||
[] |
|||
{ } |
|||
[] × [1, 2] |
|||
[] |
|||
{ } |
|||
[1776, 1789] × [7, 12] × [4, 14, 23] × [0, 1] |
|||
[[1776, 7, 4, 0], [1776, 7, 4, 1], [1776, 7, 14, 0], [1776, 7, 14, 1], [1776, 7, 23, 0], [1776, 7, 23, 1], [1776, 12, 4, 0], [1776, 12, 4, 1], [1776, 12, 14, 0], [1776, 12, 14, 1], [1776, 12, 23, 0], [1776, 12, 23, 1], [1789, 7, 4, 0], [1789, 7, 4, 1], [1789, 7, 14, 0], [1789, 7, 14, 1], [1789, 7, 23, 0], [1789, 7, 23, 1], [1789, 12, 4, 0], [1789, 12, 4, 1], [1789, 12, 14, 0], [1789, 12, 14, 1], [1789, 12, 23, 0], [1789, 12, 23, 1]] |
|||
[1, 2, 3] × [30] × [500, 100] |
|||
[[1, 30, 500], [1, 30, 100], [2, 30, 500], [2, 30, 100], [3, 30, 500], [3, 30, 100]] |
|||
[1, 2, 3] × [] × [500, 100] |
|||
[] |
|||
{ } |
|||
</pre> |
</pre> |
||