2 votes

Y a-t-il une bonne façon de calculer la somme du produit dans Rust ?

Je suis nouveau en Rust, et je cherche un bon moyen de calculer la somme de produits en Rust.

Je veux dire que s'il y a un vecteur comme [3, 4, 5], je veux calculer (3 * 4) + (3 * 5) + (4 * 5).

voici ma méthode,

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 vous connaissez le meilleur, j'aimerais le savoir !

3voto

Joe_Jingyu Points 106

Vous pouvez utiliser combinations , map y sum o combinations et fold pour mettre en œuvre le produit.

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);

}

aire de jeux

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X