wiki-pascals-triangle.rs

752 B · rust · 27 lines

1use mrlycore::errors::Result;2use mrlyfig::{ink, save, Board};34const ROWS: usize = 64;56fn main() -> Result<()> {7    let mut board = Board::square();8    let frame = board.frame(0.06);9    let step = frame.w / ROWS as f64;10    let (cx, _) = frame.center();11    let mut odd = 0usize;12    for n in 0..ROWS {13        let y = frame.y + (n as f64 + 0.5) * step;14        for k in 0..=n {15            let x = cx + (k as f64 - n as f64 / 2.0) * step;16            if n & k == k {17                board.disc(x, y, step * 0.42, ink::blue());18                odd += 1;19            } else {20                board.disc(x, y, step * 0.11, ink::dim());21            }22        }23    }24    assert_eq!(odd, 729);25    save("wiki-pascals-triangle", &board)?;26    Ok(())27}