|
|
|
|
@ -7,22 +7,28 @@
|
|
|
|
|
* @brief pre-advent testing
|
|
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
|
|
use solver::solver::Solver;
|
|
|
|
|
use solver::solver::{Solver, SolverState};
|
|
|
|
|
|
|
|
|
|
pub struct Day0;
|
|
|
|
|
pub struct Day0
|
|
|
|
|
{
|
|
|
|
|
solver_state: SolverState,
|
|
|
|
|
num_fib_values: i32,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl Solver for Day0
|
|
|
|
|
{
|
|
|
|
|
fn init(&mut self, _config: solver::solver::SolverState) -> Result<(), String>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
self.solver_state = _config.clone();
|
|
|
|
|
self.num_fib_values = self.solver_state.get_value("num_fib_values").parse().expect("Could not parse num_fib_values");
|
|
|
|
|
return Ok(())
|
|
|
|
|
// todo!("Day0::init()")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn solve(&mut self, _input: String) -> Result<u64, String>
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
let fibs = gen_fib_seq(self.num_fib_values, std::i64::MAX); // no max_val basically
|
|
|
|
|
println!("fib nums:");
|
|
|
|
|
print_fibs(fibs);
|
|
|
|
|
Ok(0)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -36,6 +42,40 @@ impl Day0
|
|
|
|
|
{
|
|
|
|
|
pub fn new() -> Day0
|
|
|
|
|
{
|
|
|
|
|
Day0 {}
|
|
|
|
|
Day0 { solver_state: SolverState::new(), num_fib_values: 5 }
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Helpers
|
|
|
|
|
/// stop_after: the number of fib values to generate
|
|
|
|
|
/// max_val: the maximum fib value to generate. Forces the function to
|
|
|
|
|
/// return even if stop_after is not met.
|
|
|
|
|
fn gen_fib_seq(stop_after: i32, max_val: i64) -> Vec<i64>
|
|
|
|
|
{
|
|
|
|
|
let mut a: i64 = 1;
|
|
|
|
|
let mut b: i64 = 1;
|
|
|
|
|
let mut nums: Vec<i64> = vec![];
|
|
|
|
|
nums.push(a);
|
|
|
|
|
for _ in 0..stop_after -1
|
|
|
|
|
{
|
|
|
|
|
nums.push(b);
|
|
|
|
|
let t = b;
|
|
|
|
|
b = a + b;
|
|
|
|
|
a = t;
|
|
|
|
|
|
|
|
|
|
if b >= max_val
|
|
|
|
|
{
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
nums
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn print_fibs(fibs: Vec<i64>)
|
|
|
|
|
{
|
|
|
|
|
for (i, f) in fibs.iter().enumerate()
|
|
|
|
|
{
|
|
|
|
|
println!("{}: {}", i + 1, f);
|
|
|
|
|
}
|
|
|
|
|
}
|