use core::mem::MaybeUninit;
pub const fn idiv(lhs: isize, rhs: isize) -> isize {
assert!(lhs % rhs == 0);
lhs / rhs
}
pub const fn transpose_arrays<T: Copy, const R: usize, const C: usize>(
array: [[T; C]; R],
) -> [[T; R]; C] {
let mut result = MaybeUninit::uninit_array();
let mut i = 0;
while i < C {
let mut row = MaybeUninit::uninit_array();
let mut j = 0;
while j < R {
row[j] = MaybeUninit::new(array[j][i]);
j += 1;
}
result[i] = row.transpose();
i += 1;
}
unsafe { result.transpose().assume_init() }
}