rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

use std::cmp::Ordering::*;

impl Solution {
    fn find_kth_bit(n: i32, k: i32) -> char {
        if Self::find(n, k - 1) == 0 {
            '0'
        } else {
            '1'
        }
    }

    fn find(n: i32, k: i32) -> i32 {
        if n == 1 {
            0
        } else {
            let size = (1 << n) - 1;
            match (size / 2).cmp(&k) {
                Equal => 1,
                Greater => Self::find(n - 1, k),
                Less => 1 - Self::find(n - 1, size - 1 - k),
            }
        }
    }
}

#[test]
fn test() {
    let n = 3;
    let k = 1;
    let res = '0';
    assert_eq!(Solution::find_kth_bit(n, k), res);
    let n = 4;
    let k = 11;
    let res = '1';
    assert_eq!(Solution::find_kth_bit(n, k), res);
    let n = 1;
    let k = 1;
    let res = '0';
    assert_eq!(Solution::find_kth_bit(n, k), res);
    let n = 2;
    let k = 3;
    let res = '1';
    assert_eq!(Solution::find_kth_bit(n, k), res);
    let n = 3;
    let k = 7;
    let res = '1';
    assert_eq!(Solution::find_kth_bit(n, k), res);
}