wiki-goldbach-conjecture.rs
1.1 kB · rust · 40 lines
1use mrlycore::errors::Result;2use mrlyfig::{ink, plot, save, Board};3use mrlynum::formulas;45const TOP: usize = 400;67fn main() -> Result<()> {8 let mut board = Board::square();9 let frame = board.frame(0.08);10 let record = formulas::goldbach_record(TOP);11 let peak = record.iter().copied().max().unwrap_or(1) as f64;12 let slot = frame.w / record.len() as f64;13 let pad = slot * 0.16;14 let mut sixes = 0usize;15 for (i, &pairs) in record.iter().enumerate() {16 let even = 2 * (i + 2);17 let h = frame.h * pairs as f64 / peak;18 let hue = if even.is_multiple_of(6) {19 sixes += 1;20 ink::yellow()21 } else {22 ink::blue()23 };24 board.rect(25 frame.x + i as f64 * slot + pad,26 frame.y + frame.h - h,27 slot - 2.0 * pad,28 h,29 hue,30 );31 }3233 plot::baseline(&mut board, frame, ink::line());34 assert_eq!(record.len(), 199);35 assert_eq!(record.iter().copied().min(), Some(1));36 assert_eq!(peak as usize, 27);37 assert_eq!(sixes, 66);38 save("wiki-goldbach-conjecture", &board)?;39 Ok(())40}