use inquire;
use shapesie::solve_puzzle;
fn main() {
let date = inquire::DateSelect::new("Select a date to see the daily puzzle solution:").prompt();
let day: u8 = format!("{:?}", date).split("-").last().unwrap()[0..2]
.parse()
.unwrap();
let month: u8 = format!("{:?}", date)
.split("-")
.nth(1)
.unwrap()
.parse()
.unwrap();
#[rustfmt::skip]
let mut board: Vec<Vec<bool>> = vec![
vec![1, 1, 1, 1, 1, 1, 0],
vec![1, 1, 1, 1, 1, 1, 0],
vec![1, 1, 1, 1, 1, 1, 1],
vec![1, 1, 1, 1, 1, 1, 1],
vec![1, 1, 1, 1, 1, 1, 1],
vec![1, 1, 1, 1, 1, 1, 1],
vec![1, 1, 1, 0, 0, 0, 0],
]
.iter()
.map(|y| y.iter().map(|x| *x == 1).collect())
.collect();
let y_index = (month - 1) / 6;
let x_index = (month - 1) % 6;
let month_square: &mut bool = board
.get_mut(usize::from(y_index))
.unwrap()
.get_mut(usize::from(x_index))
.unwrap();
*month_square = false;
let y_index = ((day - 1) / 7) + 2;
let x_index = (day - 1) % 7;
let day_square: &mut bool = board
.get_mut(usize::from(y_index))
.unwrap()
.get_mut(usize::from(x_index))
.unwrap();
*day_square = false;
#[rustfmt::skip]
let pieces = vec!(
vec!(
vec!(1, 1),
vec!(1, 0),
vec!(1, 0),
vec!(1, 0)
),
vec!(
vec!(1, 0),
vec!(1, 1),
vec!(1, 0),
vec!(1, 0)
),
vec!(
vec!(1, 0, 1),
vec!(1, 1, 1),
),
vec!(
vec!(0, 0, 1),
vec!(1, 1, 1),
vec!(1, 0, 0),
),
vec!(
vec!(1, 1, 1),
vec!(1, 1, 1),
),
vec!(
vec!(1, 0, 0),
vec!(1, 0, 0),
vec!(1, 1, 1),
),
vec!(
vec!(0, 0, 1, 1),
vec!(1, 1, 1, 0),
),
vec!(
vec!(1, 1, 1),
vec!(0, 1, 1),
),
).iter().map(|piece| piece.iter().map(|x_arr| x_arr.iter().map(|x| *x == 1).collect()).collect()).collect();
let solution = solve_puzzle(&board, &pieces).expect("Unable to solve puzzle");
print!("{}", solution);
}