rust - 循环遍历向量并找到具有固定数量索引的最大值和

标签 rust

我需要:

  1. 遍历一个包含八个值的数组 (d = [1, 2, 3, 4, 5, 6, 7, 8])。
  2. 对前三项(索引:0、1、2)求和 ('sum1') 和最后五项(索引:3、4、5、6、7)( >'sum2'),并用这些导出的和执行操作 (abs(3*sum1 + 5*sum2)
  3. 对八种不同的配置执行此操作。下一个配置是对索引为 1、2、3 的三个项目求和,而对索引为 4、5、6、7、0 的五个项目求和。在每个新配置下,项目总和将向右移动一个索引.
  4. 据此,应该通过执行 abs(3*sum1 + 5*sum2) 表达式获得向量或其他内容中的八个值,每个值包含不同的 sum1sum2 由于索引不同。

  5. 我需要在这八个值中找到最大值。

最佳答案

假设您有一个无限的数字序列,它们会 self 重复。它使问题变得容易得多:

fn main() {
    let d = [1, 2, 3, 4, 5, 6, 7, 8];
    let mut numbers = d.iter().cycle();

    let max = (0..d.len())
        .map(|_| {
            let sum1: i32 = numbers.by_ref().take(3).sum();
            let sum2: i32 = numbers.by_ref().take(5).sum();

            // Skip one so the next iteration is offset by one
            numbers.next();

            (sum1, sum2)
        })
        .map(|(sum1, sum2)| i32::abs(3 * sum1 + 5 * sum2))
        .max();

    println!("{:?}", max);
}

关于rust - 循环遍历向量并找到具有固定数量索引的最大值和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50283814/

相关文章:

rust - Rust 中星号的用法是什么?

iterator - 如何自动实现 FromIterator?

rust - 使用 println 打印不同次数的字符

rust - 在 Rust 中是否可以在过程宏代码中调用宏?

rust - Async Rust 中每个 Future 的不同 Context 或 Waker

rust - 如何为特征的每个实现自动生成递增的数字标识符?

rust - 为通用特征实现特征

multithreading - 避免闭包——将线程变量封装在一个结构体中

rust - 我们如何在多个调用中保存和检索结构中的变量?

rust - 在 `cfg` 宏下使用条件编译模块