rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

impl Solution {
    fn predict_the_winner(nums: Vec<i32>) -> bool {
        let n = nums.len();
        Self::dp(1, 0, n, 0, &nums)
    }

    fn dp(player: i32, start: usize, end: usize, sum: i32, nums: &[i32]) -> bool {
        if start == end {
            if player > 0 {
                sum >= 0
            } else {
                sum < 0
            }
        } else {
            let mut res = false;
            res |= !Self::dp(-player, start + 1, end, sum + player * nums[start], nums);
            if !res {
                res |= !Self::dp(-player, start, end - 1, sum + player * nums[end - 1], nums);
            }
            res
        }
    }
}

#[test]
fn test() {
    let nums = vec![1, 5, 2];
    let res = false;
    assert_eq!(Solution::predict_the_winner(nums), res);
    let nums = vec![1, 5, 233, 7];
    let res = true;
    assert_eq!(Solution::predict_the_winner(nums), res);
}