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}