use std::fs; fn main() { let input = fs::read_to_string("input.txt").unwrap(); let input: Vec<_> = input.split('\n') .map(|line| { line.split_whitespace() .map(|num| num.parse::().unwrap()) .collect::>() }).collect(); let mut total = 0; for line in input { let mut line_starters: Vec = vec![*line.first().unwrap()]; let mut cur_line: Vec = line; while !cur_line.iter().all(|x| *x == 0) { let mut next_line: Vec = vec![]; for i in 1..cur_line.len() { let diff = cur_line[i] - cur_line[i-1]; next_line.push(diff) } line_starters.push(*next_line.first().unwrap()); cur_line = next_line; } let mut sum = 0; for i in (1..line_starters.len()).rev() { sum = line_starters[i - 1] - sum; } total += sum; } println!("{:?}", total) } // use std::fs; // fn main() { // let input = fs::read_to_string("input.txt").unwrap(); // let input: Vec<_> = input.split('\n') // .map(|line| { // line.split_whitespace() // .map(|num| num.parse::().unwrap()) // .collect::>() // }).collect(); // let mut total = 0; // for line in input { // let mut line_enders: Vec = vec![*line.last().unwrap()]; // let mut cur_line: Vec = line; // while !cur_line.iter().all(|x| *x == 0) { // let mut next_line: Vec = vec![]; // for i in 1..cur_line.len() { // let diff = cur_line[i] - cur_line[i-1]; // next_line.push(diff) // } // line_enders.push(*next_line.last().unwrap()); // cur_line = next_line; // } // let mut sum = 0; // for i in (1..line_enders.len()).rev() { // sum = sum + line_enders[i - 1]; // } // total += sum; // } // println!("{:?}", total) // }