research-coprime.rs

1.1 kB · rust · 38 lines

1use mrlycore::errors::Result;2use mrlyfig::{ink, save, Board, Grid};3use mrlymath::two::designs;4use mrlynum::classics::gcd;56fn main() -> Result<()> {7    let mut board = Board::square();8    let area = board.frame(0.08);9    let cells = designs::create(495, 3, 4, 0, 3)?;10    let side = cells.width();11    assert_eq!(side, 81);12    let types = cells.types();13    assert_eq!(types.sum(), 4096);14    let grid = Grid::new(area, side, side, 0.10);15    let mut lit = 0usize;16    for row in 0..side {17        for col in 0..side {18            if types.get(&[row, col]) == 0 {19                continue;20            }21            let x = (col + 1) as u128;22            let y = (side - row) as u128;23            let coprime = gcd(x, y) == 1;24            if coprime {25                lit += 1;26            }27            grid.fill(28                &mut board,29                col,30                row,31                if coprime { ink::yellow() } else { ink::dim() },32            );33        }34    }35    assert!(lit > 0 && lit < 4096);36    save("research-coprime", &board)?;37    Ok(())38}