Anonymous user
Equilibrium index: Difference between revisions
Add Rust implementation
(Add Rust implementation) |
|||
Line 2,438:
[2, 9, 2] => [1]
[1, -1, 1, -1, 1, -1, 1] => [0, 1, 2, 3, 4, 5, 6]
</pre>
=={{header|Rust}}==
<lang rust>
extern crate num;
use num::traits::Zero;
fn equilibrium_indices(v: &[i32]) -> Vec<usize> {
let mut right = v.iter().sum();
let mut left = i32::zero();
v.iter().enumerate().fold(vec![], |mut out, (i, &el)| {
right -= el;
if left == right {
out.push(i);
}
left += el;
out
})
}
fn main() {
let v = [-7i32, 1, 5, 2, -4, 3, 0];
let indices = equilibrium_indices(&v);
println!("Equilibrium indices for {:?} are: {:?}", v, indices);
}
</lang>
{{out}}
<pre>
Equilibrium indices for [-7, 1, 5, 2, -4, 3, 0] are: [3, 6]
</pre>
|