Solve 06
This commit is contained in:
parent
ab29172d43
commit
53e172f9c6
2 changed files with 133 additions and 0 deletions
27
src/lib.rs
27
src/lib.rs
|
|
@ -127,3 +127,30 @@ pub const DIRECTIONS8: [IVec2; 8] = [
|
|||
IVec2::new(0, -1),
|
||||
IVec2::new(1, -1),
|
||||
];
|
||||
|
||||
/// Transposes a Vec of Vecs.
|
||||
///
|
||||
/// ```rust
|
||||
/// # use aoc::transpose;
|
||||
/// let input = vec![vec![1, 2, 3], vec![4, 5, 6]];
|
||||
/// let expected = vec![vec![1, 4], vec![2, 5], vec![3, 6]];
|
||||
/// assert_eq!(transpose(input), expected);
|
||||
/// ```
|
||||
///
|
||||
/// https://stackoverflow.com/a/64499219
|
||||
pub fn transpose<T>(v: Vec<Vec<T>>) -> Vec<Vec<T>> {
|
||||
if v.is_empty() {
|
||||
return v;
|
||||
}
|
||||
|
||||
let len = v[0].len();
|
||||
let mut iters: Vec<_> = v.into_iter().map(|n| n.into_iter()).collect();
|
||||
(0..len)
|
||||
.map(|_| {
|
||||
iters
|
||||
.iter_mut()
|
||||
.map(|n| n.next().unwrap())
|
||||
.collect::<Vec<T>>()
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue