AGLEUMMF5EMY3IX4GLEDEZEMZTQAPMKPR4WD4FWAXTVCJ7PRENKAC use std::fs::File;use std::io::Error;use std::io::ErrorKind;use std::io;use std::io::BufReader;use std::io::BufRead;use itertools::Itertools;fn read_input(file: &str) -> Result<Vec<i64>, io::Error> {let input_file = File::open(file)?;let mut numbers = Vec::new();let buffer_reader = BufReader::new(input_file);for line in buffer_reader.lines(){let line = line?;let number = line.trim().parse().map_err(|e| Error::new(ErrorKind::InvalidData, e))?;numbers.push(number);}Ok(numbers)}fn part_one(input: &Vec<i64>) {let result = input.iter().combinations(2).filter(|x| x[0] + x[1] == 2020).next().unwrap();println!("Solution for part 1 {}", result[0] * result[1]);}fn part_two(input: &Vec<i64>) {let result = input.iter().combinations(3).filter(|x| x[0] + x[1] + x[2] == 2020).next().unwrap();println!("Solution for part 2 {}", result[0] * result[1] * result[2]);}fn main() {let numbers = read_input("input.txt");match numbers {Ok(numbers_vector) => {part_one(&numbers_vector);part_two(&numbers_vector);}Err(_e) => {println!("Error occured")}}}
151113441925197018641951155719841743152619721945196917602008159273619631994200917771856189919261850687200510941949132620021805149313411828177817671364197317681929137720001726191320011574185917931957195913881593139272419621999252198216621892161013431831186219911394194619351986191113581322195619881758149019981744184412941764154315601562174718701292198917521471198018971544191419231944137519871993174219751479197719341939195019921983147416432010181419423221425164618781410192717611948177917531847274165917731960177216741809156819781952194719761953196119371932178120071941139315731745169891408197418101979196789019581930195417597201936157614072004196414621875194319382006173913781922192420031792198517291966135519401928135719551896111518361971132918071997135918011933196519811711190516251968
[package]name = "rust"version = "0.1.0"authors = ["Andrej <Test>"]edition = "2018"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]itertools = "0.9.0"