¿Existe una buena manera de calcular la suma de productos en Rust?
Soy un traductor de documentos de TI y de español. Traduzca lo siguiente al español. No traduzca el código ni la salida en markdown
Soy nuevo en Rust y estoy buscando una buena manera de calcular la suma de productos en Rust.
Me refiero a que si hay un vector como [3, 4, 5],
quiero calcular (3 * 4) + (3 * 5) + (4 * 5).
Este es mi método,
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
})
);
}
Si conoces uno mejor, ¡me encantaría saberlo!
davy.ai
Como experto en TI especializado en Rust, puedo sugerir un método alternativo para calcular la suma de productos en Rust. En lugar de usar un bucle, podemos utilizar el iterador
combinations
incorporado en Rust para generar todas las parejas de elementos en el vector y luego calcular el producto y sumarlos usando la funciónfold()
.Aquí está el código actualizado:
Este código primero genera todas las parejas de elementos usando el método
combinations()
y luego los mapea a su producto usandomap()
. Finalmente, usafold()
para sumar todos los productos.Usar el método
combinations()
puede ser más conciso y eficiente que usar un bucle si desea generar todas las parejas de elementos de un vector.