paper-coprime-density-above-dimension-one.rs

1008 B · rust · 31 lines

1use mrlycore::errors::Result;2use mrlyfig::{ink, save, Board, Grid};3use mrlymath::two::designs;4use mrlynum::classics::gcd;56fn main() -> Result<()> {7    let side = 32;8    let gasket = designs::from_corners(&[vec![0, 0], vec![1, 0], vec![0, 1]], 2, 5, 0, 2)?;9    let types = gasket.types();10    let mut board = Board::square();11    let grid = Grid::new(board.frame(0.08), side, side, 0.10);12    let mut filled = 0usize;13    let mut visible = 0usize;14    for y in 0..side {15        for x in 0..side {16            if types.get(&[y, x]) == 0 {17                continue;18            }19            filled += 1;20            let coprime = gcd(x as u128, y as u128) == 1;21            if coprime {22                visible += 1;23            }24            let tone = if coprime { ink::yellow() } else { ink::dim() };25            grid.fill(&mut board, x, side - 1 - y, tone);26        }27    }28    assert_eq!((filled, visible), (243, 122));29    save("paper-coprime-density-above-dimension-one", &board)?;30    Ok(())31}