DEV Community

Discussion on: Daily Challenge #275 - Casino Chips

Collapse
 
qm3ster profile image
Mihail Malo

Rust

fn solve(mut chips: [u64; 3]) -> u64 {
    chips.sort_unstable();
    let [low, mid, high] = chips;
    let extra = low & 1;
    let rings = low - extra;
    let tower = mid - rings;
    let last = (high != mid) as u64 & extra;
    rings * 3 + tower + last
}

fn main() {
    assert_eq!(solve([1, 1, 1]), 1);
    assert_eq!(solve([1, 2, 1]), 2);
    assert_eq!(solve([4, 1, 1]), 2);
    dbg!(solve([8, 1, 4]));
    dbg!(solve([7, 4, 10]));
    dbg!(solve([12, 12, 12]));
    dbg!(solve([1, 23, 2]));
}

Look at it go!

Explaination in dev.to/qm3ster/comment/1303g