use std::fs::read_to_string; fn extrapolate(sequence: &Vec) -> i64 { if sequence.iter().all(|num| { *num == 0 }) { return 0; } let mut deltas: Vec = Vec::new(); for idx in 1..sequence.len() { deltas.push(sequence[idx] - sequence[idx - 1]); } sequence.last().unwrap() + extrapolate(&deltas) } fn main() { let sequences = read_to_string("input.txt").unwrap().lines().map(|line| { line.split(' ').map(|num| { num.parse::().unwrap() }).collect::>() }).collect::>(); println!("Sum of extrapolations: {}", sequences.iter().map(|sequence| { extrapolate(sequence) }).sum::()); }