有没有一种计算 Rust 乘积总和的好方法?
is there a good way to calculate sum of product in Rust?
我是 Rust 的新手,我正在寻找一种在 Rust 中计算乘积总和的好方法。
我的意思是如果有像 [3, 4, 5] 这样的 Vector,
我想计算 (3 * 4) + (3 * 5) + (4 * 5).
这是我的方法,
fn main() {
let a = [3, 4, 5];
assert_eq!(
47,
[3, 4, 5].iter().enumerate().fold(0, |mut s, (i, v)| {
for ii in i + 1..a.len() {
s += *v * a[ii];
}
s
})
);
}
如果你知道更好的,我很想知道!
您可以使用 combinations
、map
和 sum
或 combinations
和 fold
来实施产品。
use itertools::Itertools;
fn main() {
let a = [3, 4, 5];
let b: i32 = a.iter().combinations(2).map(|x| x[0] * x[1]).sum();
assert_eq!(b, 47);
let c: i32 = a.iter().combinations(2).fold(0, |acc, x| acc + (x[0] * x[1]) );
assert_eq!(c, 47);
}
我是 Rust 的新手,我正在寻找一种在 Rust 中计算乘积总和的好方法。
我的意思是如果有像 [3, 4, 5] 这样的 Vector, 我想计算 (3 * 4) + (3 * 5) + (4 * 5).
这是我的方法,
fn main() {
let a = [3, 4, 5];
assert_eq!(
47,
[3, 4, 5].iter().enumerate().fold(0, |mut s, (i, v)| {
for ii in i + 1..a.len() {
s += *v * a[ii];
}
s
})
);
}
如果你知道更好的,我很想知道!
您可以使用 combinations
、map
和 sum
或 combinations
和 fold
来实施产品。
use itertools::Itertools;
fn main() {
let a = [3, 4, 5];
let b: i32 = a.iter().combinations(2).map(|x| x[0] * x[1]).sum();
assert_eq!(b, 47);
let c: i32 = a.iter().combinations(2).fold(0, |acc, x| acc + (x[0] * x[1]) );
assert_eq!(c, 47);
}