rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;
use rustgym_util::*;

impl Solution {
    fn split_list_to_parts(head: ListLink, k: i32) -> Vec<ListLink> {
        let mut nodes = vec![];
        let mut p = head;
        while let Some(mut node) = p {
            p = node.next.take();
            nodes.push(node);
        }
        let n = nodes.len();
        let k = k as usize;
        let left = n % k;
        let right = k - left;
        let m = n / k;
        let mut res = vec![None; k];
        for i in 0..right {
            let mut prev = None;
            for _ in 0..m {
                let mut node = nodes.pop().unwrap();
                node.next = prev;
                prev = Some(node);
            }
            res[k - 1 - i] = prev;
        }
        for i in 0..left {
            let mut prev = None;
            for _ in 0..=m {
                let mut node = nodes.pop().unwrap();
                node.next = prev;
                prev = Some(node);
            }
            res[k - right - 1 - i] = prev;
        }
        res
    }
}

#[test]
fn test() {
    let head = list!(1, 2, 3);
    let k = 5;
    let res = vec![list!(1), list!(2), list!(3), None, None];
    assert_eq!(Solution::split_list_to_parts(head, k), res);
}