research-core.rs
1.2 kB · rust · 35 lines
1use mrlycore::errors::Result;2use mrlyfig::board::{Board, Frame};3use mrlyfig::{ink, save, Grid};4use mrlymath::bang;5use mrlymath::two::designs;67fn main() -> Result<()> {8 let mut board = Board::square();9 let area = board.frame(0.08);10 let universe = bang::bang(2);11 assert_eq!(universe.total, 16);12 assert_eq!(universe.distinct(), 6);13 let canonical: Vec<u128> = universe.canonical().iter().map(|d| d.i).collect();14 assert_eq!(canonical, vec![0, 1, 3, 6, 7, 15]);15 let gutter = area.w * 0.030;16 let side = (area.w - 3.0 * gutter) / 4.0;17 for code in 0..16u128 {18 let design = universe.design(code);19 let color = if design.canonical {20 ink::yellow()21 } else {22 ink::blue()23 };24 let x = area.x + (code % 4) as f64 * (side + gutter);25 let y = area.y + (code / 4) as f64 * (side + gutter);26 let frame = Frame::new(x, y, side, side);27 board.rect(frame.x, frame.y, frame.w, frame.h, ink::panel());28 let cells = designs::create(code, 2, 4, 0, 2)?;29 assert_eq!(cells.width(), 16);30 Grid::new(frame, 16, 16, 0.0)31 .paint(&mut board, &cells, |kind| (kind != 0).then_some(color));32 }33 save("research-core", &board)?;34 Ok(())35}