diff --git a/examples/brute_force.rs b/examples/brute_force.rs
index 69aabba..a03fc49 100644
--- a/examples/brute_force.rs
+++ b/examples/brute_force.rs
@@ -42,19 +42,20 @@ fn main() {
let mut b = args.problem.get_problem();
- println!("{b}");
+ b.print();
match args.mode {
Mode::Solutions => {
while b.next_finish_state() {
- println!("{}\n{}\n{}\n{}", b.count(), b.solution_count(), b.cost(), b);
+ println!("{}\n{}\n{}", b.count(), b.solution_count(), b.cost());
+ b.print();
}
println!("Solutions: {}\nStates: {}", b.solution_count(), b.count());
}
Mode::Step => {
while b.next_state() {
- println!("{}", b);
+ b.print();
let mut s = String::new();
let _ = io::stdin().read_line(&mut s);
}
diff --git a/examples/solve_belt.rs b/examples/solve_belt.rs
index da8aea2..54e71cf 100644
--- a/examples/solve_belt.rs
+++ b/examples/solve_belt.rs
@@ -1,7 +1,6 @@
-use std::io;
-
use clap::{Parser, ValueEnum};
use factorio_blueprint::belt_finding::{conflict_avoidance::ConflictAvoidance, problems, Problem};
+use std::io;
#[derive(ValueEnum, Clone)]
enum Mode {
@@ -44,40 +43,40 @@ fn main() {
match args.mode {
Mode::Solve => {
- println!("{}", p);
+ p.print();
p.find_path();
- println!("{}", p);
+ p.print();
}
Mode::ConflictAvoidance => {
- println!("{}", p);
+ p.print();
p.find_path();
- println!("{}", p);
+ p.print();
p.find_path();
- println!("{}", p);
+ p.print();
p.find_path();
- println!("{}", p);
+ p.print();
p.find_path();
- println!("{}", p);
+ p.print();
let mut c = ConflictAvoidance::new(p);
- println!("{}", c);
+ c.print();
while c.remove_conflict() {
- println!("{}", c)
+ c.print();
}
}
Mode::ConflictStep => {
- println!("{}", p);
+ p.print();
p.find_path();
- println!("{}", p);
+ p.print();
p.find_path();
- println!("{}", p);
+ p.print();
p.find_path();
- println!("{}", p);
+ p.print();
p.find_path();
- println!("{}", p);
+ p.print();
let mut c = ConflictAvoidance::new(p);
- println!("{}", c);
+ c.print();
while c.remove_conflict() {
- println!("{}", c);
+ c.print();
let mut s = String::new();
let _ = io::stdin().read_line(&mut s);
}
diff --git a/src/belt_finding/brute_force.rs b/src/belt_finding/brute_force.rs
index 5476823..66f5a7a 100644
--- a/src/belt_finding/brute_force.rs
+++ b/src/belt_finding/brute_force.rs
@@ -1,13 +1,9 @@
-use std::fmt::Display;
-
-use termcolor::ColorSpec;
-
-use crate::misc::Map;
-
use super::{
common::{print_map, Dimension, Direction, PathField, PositionType},
Position, COLORS,
};
+use crate::misc::Map;
+use termcolor::ColorSpec;
#[derive(Default, Debug, Clone)]
pub struct BruteforceField {
@@ -446,9 +442,8 @@ impl Bruteforce {
});
if self.is_next_free(&pos, &second_last.dir().clockwise()) {
return true;
- } else {
- return self.modify_remove();
}
+ return self.modify_remove();
}
if second_last.dir().clockwise() == dir {
@@ -458,9 +453,8 @@ impl Bruteforce {
});
if self.is_next_free(&pos, &second_last.dir().counter_clockwise()) {
return true;
- } else {
- return self.modify_remove();
}
+ return self.modify_remove();
}
if second_last.dir().counter_clockwise() == dir
@@ -470,9 +464,8 @@ impl Bruteforce {
if self.is_next_free(&p, &d) {
return true;
- } else {
- return self.modify_remove();
}
+ return self.modify_remove();
}
}
PathField::Underground { pos, dir, len } => {
@@ -481,9 +474,8 @@ impl Bruteforce {
if self.is_next_free(&p, &d) {
return true;
- } else {
- return self.modify_remove();
}
+ return self.modify_remove();
}
}
}
@@ -598,13 +590,7 @@ impl Bruteforce {
pub fn solution_count(&self) -> u128 {
self.solution_count
}
-}
-
-impl Display for Bruteforce {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- let width_digits = self.map.width.ilog10() + 1;
- let height_digits = self.map.height.ilog10() + 1;
-
+ pub fn print(&self) {
let mut m: Map