rustgym 0.2.0

rustgym solutions
Documentation
struct Solution;

trait MyClamp {
    fn my_clamp(self, min: i32, max: i32) -> i32;
}

impl MyClamp for i32 {
    fn my_clamp(self, min: i32, max: i32) -> i32 {
        self.max(min).min(max)
    }
}

impl Solution {
    fn check_overlap(
        radius: i32,
        x_center: i32,
        y_center: i32,
        x1: i32,
        y1: i32,
        x2: i32,
        y2: i32,
    ) -> bool {
        let dx = x_center.my_clamp(x1, x2) - x_center;
        let dy = y_center.my_clamp(y1, y2) - y_center;
        dx * dx + dy * dy <= radius * radius
    }
}

#[test]
fn test() {
    let radius = 1;
    let x_center = 0;
    let y_center = 0;
    let x1 = 1;
    let y1 = -1;
    let x2 = 3;
    let y2 = 1;
    let res = true;
    assert_eq!(
        Solution::check_overlap(radius, x_center, y_center, x1, y1, x2, y2),
        res
    );
    let radius = 1;
    let x_center = 0;
    let y_center = 0;
    let x1 = -1;
    let y1 = 0;
    let x2 = 0;
    let y2 = 1;
    let res = true;
    assert_eq!(
        Solution::check_overlap(radius, x_center, y_center, x1, y1, x2, y2),
        res
    );
    let radius = 1;
    let x_center = 1;
    let y_center = 1;
    let x1 = -3;
    let y1 = -3;
    let x2 = 3;
    let y2 = 3;
    let res = true;
    assert_eq!(
        Solution::check_overlap(radius, x_center, y_center, x1, y1, x2, y2),
        res
    );
    let radius = 1;
    let x_center = 1;
    let y_center = 1;
    let x1 = 1;
    let y1 = -3;
    let x2 = 2;
    let y2 = -1;
    let res = false;
    assert_eq!(
        Solution::check_overlap(radius, x_center, y_center, x1, y1, x2, y2),
        res
    );
}