rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;
use std::collections::VecDeque;

impl Solution {
    fn predict_party_victory(senate: String) -> String {
        let mut rqueue = VecDeque::new();
        let mut dqueue = VecDeque::new();
        let n = senate.len();
        for (i, c) in senate.char_indices() {
            if c == 'R' {
                rqueue.push_back(i);
            } else {
                dqueue.push_back(i);
            }
        }
        while !rqueue.is_empty() && !dqueue.is_empty() {
            let r = rqueue.pop_front().unwrap();
            let d = dqueue.pop_front().unwrap();
            if r < d {
                rqueue.push_back(r + n);
            } else {
                dqueue.push_back(d + n);
            }
        }
        if rqueue.is_empty() {
            "Dire".to_string()
        } else {
            "Radiant".to_string()
        }
    }
}

#[test]
fn test() {
    let senate = "RD".to_string();
    let res = "Radiant".to_string();
    assert_eq!(Solution::predict_party_victory(senate), res);
    let senate = "RDD".to_string();
    let res = "Dire".to_string();
    assert_eq!(Solution::predict_party_victory(senate), res);
}