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