Add minesweeper input

This commit is contained in:
hal8174 2025-02-23 17:26:37 +01:00
parent d130fd57d9
commit af6ef45043
2 changed files with 61 additions and 8 deletions

17
expert.minesweeper Normal file
View file

@ -0,0 +1,17 @@
99
2
2111

View file

@ -1,5 +1,6 @@
use std::collections::HashMap;
use std::{collections::HashMap, path::PathBuf};
use clap::Parser;
use simple_sat_solver::{
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() {
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![
// vec![0, 0, 1, 10, 10, 10],
// vec![1, 1, 2, 10, 10, 10],
@ -144,16 +180,16 @@ fn main() {
// vec![10; 6],
// ];
//
let input = vec![
vec![2, 2, 10],
vec![10, 10, 10],
vec![10, 10, 10],
vec![10, 10, 10],
];
// let input = vec![
// vec![2, 2, 10],
// vec![10, 10, 10],
// vec![10, 10, 10],
// vec![10, 10, 10],
// ];
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);
}