improve split_from
This commit is contained in:
parent
be8f97d4f1
commit
27e936c22a
16
src/misc.rs
16
src/misc.rs
@ -4,7 +4,17 @@ pub fn split_from(min: usize, max: usize, x: usize) -> Vec<Vec<usize>> {
|
|||||||
}
|
}
|
||||||
let x_lower = x.checked_sub(1).unwrap_or(min);
|
let x_lower = x.checked_sub(1).unwrap_or(min);
|
||||||
let x_upper = (x + 1).min(max);
|
let x_upper = (x + 1).min(max);
|
||||||
vec![(min..=x_lower).rev().collect(), (x_upper..=max).collect()]
|
let lower_range = if x_lower != min {
|
||||||
|
(min..=x_lower).rev().collect()
|
||||||
|
} else {
|
||||||
|
Vec::new()
|
||||||
|
};
|
||||||
|
let upper_range = if x_upper != max {
|
||||||
|
(x_upper..=max).collect()
|
||||||
|
} else {
|
||||||
|
Vec::new()
|
||||||
|
};
|
||||||
|
vec![lower_range, upper_range]
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -14,5 +24,9 @@ mod test {
|
|||||||
#[test]
|
#[test]
|
||||||
fn split_test() {
|
fn split_test() {
|
||||||
assert_eq!(split_from(0, 6, 2), vec![vec![1, 0], vec![3, 4, 5, 6]]);
|
assert_eq!(split_from(0, 6, 2), vec![vec![1, 0], vec![3, 4, 5, 6]]);
|
||||||
|
|
||||||
|
assert_eq!(split_from(0, 6, 0), vec![vec![], vec![1, 2, 3, 4, 5, 6]]);
|
||||||
|
|
||||||
|
assert_eq!(split_from(0, 6, 6), vec![vec![5, 4, 3, 2, 1, 0], vec![]]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user