我需要:
- 遍历一个包含八个值的数组 (
d = [1, 2, 3, 4, 5, 6, 7, 8]
)。 - 对前三项(索引:0、1、2)求和 (
'sum1'
) 和最后五项(索引:3、4、5、6、7)(>'sum2'
),并用这些导出的和执行操作 (abs(3*sum1 + 5*sum2)
。 - 对八种不同的配置执行此操作。下一个配置是对索引为 1、2、3 的三个项目求和,而对索引为 4、5、6、7、0 的五个项目求和。在每个新配置下,项目总和将向右移动一个索引.
据此,应该通过执行
abs(3*sum1 + 5*sum2)
表达式获得向量或其他内容中的八个值,每个值包含不同的sum1
和sum2
由于索引不同。我需要在这八个值中找到最大值。
最佳答案
假设您有一个无限的数字序列,它们会 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/