add fraction maths (issue #293)
parent
bf9e06cc32
commit
02423a5d92
@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "empty-zeros"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
@ -0,0 +1,77 @@
|
|||||||
|
/// Given a non-empty array containing only non-negative integers, return the
|
||||||
|
/// list with trailing and leading zeroes removed.
|
||||||
|
///
|
||||||
|
/// Example:
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// > removeZeroes([0, 0, 0, 3, 1, 4, 1, 5, 9, 0, 0, 0, 0])
|
||||||
|
/// > [3, 1, 4, 1, 5, 9]
|
||||||
|
///
|
||||||
|
/// > removeZeroes([0, 0, 0])
|
||||||
|
/// > []
|
||||||
|
///
|
||||||
|
/// > removeZeroes([8])
|
||||||
|
/// > [8]
|
||||||
|
/// ```
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut v = vec![0, 0, 0, 3, 1, 4, 1, 5, 9, 0, 0, 0, 0];
|
||||||
|
println!("{:?}", remove_zeros(&mut v));
|
||||||
|
println!("{:?}", v);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn remove_zeros(v: &mut Vec<usize>) {
|
||||||
|
if v.len() == 0 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut i = 0;
|
||||||
|
while i <= v.len() && v[0..i].iter().sum::<usize>() == 0 {
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
v.drain(..i - 1);
|
||||||
|
|
||||||
|
if v.len() == 0 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut j = v.len() - 1;
|
||||||
|
while v[j..].iter().sum::<usize>() == 0 {
|
||||||
|
j -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
v.drain(j + 1..);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_remove_zeros() {
|
||||||
|
let mut v = vec![0, 0, 0, 3, 1, 4, 1, 5, 9, 0, 0, 0, 0];
|
||||||
|
remove_zeros(&mut v);
|
||||||
|
assert_eq!(vec![3, 1, 4, 1, 5, 9], v,);
|
||||||
|
|
||||||
|
let mut v = vec![0, 0, 0];
|
||||||
|
remove_zeros(&mut v);
|
||||||
|
assert_eq!(Vec::<usize>::new(), v);
|
||||||
|
|
||||||
|
let mut v = vec![8];
|
||||||
|
remove_zeros(&mut v);
|
||||||
|
assert_eq!(vec![8], v);
|
||||||
|
|
||||||
|
let mut v = vec![];
|
||||||
|
remove_zeros(&mut v);
|
||||||
|
assert_eq!(Vec::<usize>::new(), v);
|
||||||
|
|
||||||
|
let mut v = vec![0];
|
||||||
|
remove_zeros(&mut v);
|
||||||
|
assert_eq!(Vec::<usize>::new(), v);
|
||||||
|
|
||||||
|
let mut v = vec![1, 0, 0, 0];
|
||||||
|
remove_zeros(&mut v);
|
||||||
|
assert_eq!(vec![1], v);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue