This commit is contained in:
Christian Nieves
2022-12-08 20:04:37 -06:00
commit 4608ca2230
4 changed files with 78 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

7
Cargo.lock generated Normal file
View File

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "aoc"
version = "0.1.0"

16
Cargo.toml Normal file
View File

@ -0,0 +1,16 @@
[package]
name = "aoc"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
[[bin]]
name = "one"
path = "src/01.rs"
[[bin]]
name = "two"
path = "src/02.rs"

54
src/01.rs Normal file
View File

@ -0,0 +1,54 @@
use std::{fs::File, io::Read};
fn main() {
// ------ PART ONE --------
//
let filename = "input.txt";
let file_result = File::open(filename);
let mut file = match file_result {
Ok(file) => file,
Err(error) => panic!("{}", error),
};
let mut contents = String::new();
match file.read_to_string(&mut contents) {
Ok(_) => {},
Err(error) => panic!("{}", error),
}
let mut elf : usize = 0;
let mut calories :Vec<i32> = Vec::new();
for line in contents.lines() {
if line.is_empty() {
elf += 1
} else {
// add mnissing vec element
if calories.len() == elf {
calories.push(0);
}
let c = match line.parse::<u32>() {
Ok(result) => result,
Err(error) => panic!("bitch you got strings in your numbies {}", error),
};
calories[elf] += c as i32;
}
}
let mut max = 0;
for c in calories {
if c > max {
max = c
}
}
println!("Max Calories is {}", max);
// ------ PART TWO --------
calories.sort();
println!("top{}", top_n(&calories, 1)+top_n(&calories, 2)+top_n(&calories, 3));
}
fn top_n(vector : &Vec<i32>, n: u32)-> i32 {
return vector[vector.len() -(n as usize)];
}