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}