use factorio_blueprint::{ belt_finding::{conflict_avoidance::ConflictAvoidance, Problem}, common::visualize::Visualize, layout::Layout, }; use rand::SeedableRng; fn main() { // let mut p = Problem::new(Position::new(10, 10)); // let b1 = p.add_block(Position::new(3, 2)); // let b2 = p.add_block(Position::new(5, 2)); // let b3 = p.add_block(Position::new(5, 7)); // p.add_connection(b1, Position::new(1, 0), b2, Position::new(1, 0)); // p.add_connection(b2, Position::new(3, 1), b3, Position::new(4, 6)); let file = std::fs::File::open("layout.yml").unwrap(); let p = serde_yaml::from_reader(file).unwrap(); for i in 0..1 { let mut rng = rand::rngs::SmallRng::seed_from_u64(5); let l = Layout::new(&p, &mut rng); // let s = l.score(); l.print_visualization(); let m = l.mutate(&mut rng); m.print_visualization(); let m = m.mutate(&mut rng); m.print_visualization(); let m = m.mutate(&mut rng); m.print_visualization(); let m = m.mutate(&mut rng); m.print_visualization(); let m = m.mutate(&mut rng); m.print_visualization(); let m = m.mutate(&mut rng); m.print_visualization(); let m = m.mutate(&mut rng); m.print_visualization(); let m = m.mutate(&mut rng); m.print_visualization(); // let mut p = Problem::from_layout(&l); // p.print(); // p.find_path(); // p.print(); // let mut c = ConflictAvoidance::new(p); // c.remove_all_conflicts(); // c.print(); // println!("Seed: {i}, Score {}", s); // l.print_visualization(); // if s < min { // min = s; // min_l = Some(l); // } } }