Add minesweeper input
This commit is contained in:
parent
d130fd57d9
commit
af6ef45043
2 changed files with 61 additions and 8 deletions
17
expert.minesweeper
Normal file
17
expert.minesweeper
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
99
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2
|
||||||
|
2111
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
use std::collections::HashMap;
|
use std::{collections::HashMap, path::PathBuf};
|
||||||
|
|
||||||
|
use clap::Parser;
|
||||||
use simple_sat_solver::{
|
use simple_sat_solver::{
|
||||||
dpll::Index, expr::Expr, normal_form::NormalForm, solver::SolutionIterator,
|
dpll::Index, expr::Expr, normal_form::NormalForm, solver::SolutionIterator,
|
||||||
};
|
};
|
||||||
|
|
@ -133,7 +134,42 @@ fn print_output(total: u64, input: &[Vec<u8>], map: &[Vec<u64>], default: f64) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Parser)]
|
||||||
|
struct Args {
|
||||||
|
inputfile: PathBuf,
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
let args = Args::parse();
|
||||||
|
|
||||||
|
let mut text = std::fs::read_to_string(args.inputfile).unwrap();
|
||||||
|
|
||||||
|
let mut lines = text.lines();
|
||||||
|
|
||||||
|
let mines = lines.next().unwrap().trim().parse::<u64>().unwrap();
|
||||||
|
|
||||||
|
let input = lines
|
||||||
|
.map(|l| {
|
||||||
|
l.chars()
|
||||||
|
.map(|c| match c {
|
||||||
|
'.' | '0' => 0,
|
||||||
|
'1' => 1,
|
||||||
|
'2' => 2,
|
||||||
|
'3' => 3,
|
||||||
|
'4' => 4,
|
||||||
|
'5' => 5,
|
||||||
|
'6' => 6,
|
||||||
|
'7' => 7,
|
||||||
|
'8' => 8,
|
||||||
|
'9' => 9,
|
||||||
|
' ' => 10,
|
||||||
|
'F' => 11,
|
||||||
|
_ => unreachable!(),
|
||||||
|
})
|
||||||
|
.collect::<Vec<u8>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
// let input = vec![
|
// let input = vec![
|
||||||
// vec![0, 0, 1, 10, 10, 10],
|
// vec![0, 0, 1, 10, 10, 10],
|
||||||
// vec![1, 1, 2, 10, 10, 10],
|
// vec![1, 1, 2, 10, 10, 10],
|
||||||
|
|
@ -144,16 +180,16 @@ fn main() {
|
||||||
// vec![10; 6],
|
// vec![10; 6],
|
||||||
// ];
|
// ];
|
||||||
//
|
//
|
||||||
let input = vec![
|
// let input = vec![
|
||||||
vec![2, 2, 10],
|
// vec![2, 2, 10],
|
||||||
vec![10, 10, 10],
|
// vec![10, 10, 10],
|
||||||
vec![10, 10, 10],
|
// vec![10, 10, 10],
|
||||||
vec![10, 10, 10],
|
// vec![10, 10, 10],
|
||||||
];
|
// ];
|
||||||
|
|
||||||
print_input(&input);
|
print_input(&input);
|
||||||
|
|
||||||
let (total, result, default) = solve_minesweeper(simple_sat_solver::cdcl::cdcl, &input, 5);
|
let (total, result, default) = solve_minesweeper(simple_sat_solver::cdcl::cdcl, &input, mines);
|
||||||
|
|
||||||
print_output(total, &input, &result, default);
|
print_output(total, &input, &result, default);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue