Day 1
This commit is contained in:
parent
30f08891dc
commit
7b19a53f66
3 changed files with 2314 additions and 0 deletions
2249
input/01.txt
Normal file
2249
input/01.txt
Normal file
File diff suppressed because it is too large
Load diff
30
src/bin/01_1.rs
Normal file
30
src/bin/01_1.rs
Normal file
|
@ -0,0 +1,30 @@
|
|||
#![feature(slice_group_by)]
|
||||
|
||||
use itertools::Itertools;
|
||||
use itertools::max;
|
||||
use std::fs;
|
||||
use anyhow::Result;
|
||||
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let input = fs::read_to_string("input/01.txt")?;
|
||||
|
||||
let groups = input
|
||||
.split("\n").collect::<Vec<&str>>()
|
||||
.into_iter()
|
||||
.group_by(|ell| *ell != "");
|
||||
|
||||
let elves = groups
|
||||
.into_iter()
|
||||
.filter(|(key, _)| *key)
|
||||
.map(|(_, elf)| elf
|
||||
.into_iter()
|
||||
.map(|val| val.parse::<i32>().unwrap())
|
||||
.fold(0, |acc, val| acc + val)
|
||||
);
|
||||
|
||||
let highest = max(elves);
|
||||
println!("{:?}", highest);
|
||||
|
||||
return Ok(());
|
||||
}
|
35
src/bin/01_2.rs
Normal file
35
src/bin/01_2.rs
Normal file
|
@ -0,0 +1,35 @@
|
|||
#![feature(slice_group_by)]
|
||||
|
||||
use itertools::Itertools;
|
||||
use itertools::sorted;
|
||||
use std::fs;
|
||||
use anyhow::Result;
|
||||
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let input = fs::read_to_string("input/01.txt")?;
|
||||
|
||||
let groups = input
|
||||
.split("\n").collect::<Vec<&str>>()
|
||||
.into_iter()
|
||||
.group_by(|ell| *ell != "");
|
||||
|
||||
let elves: Vec<i32> = groups
|
||||
.into_iter()
|
||||
.filter(|(key, _)| *key)
|
||||
.map(|(_, elf)| elf
|
||||
.into_iter()
|
||||
.map(|val| val.parse::<i32>().unwrap())
|
||||
.sum()
|
||||
).collect();
|
||||
|
||||
let highest = sorted(elves);
|
||||
let sum: i32 = highest
|
||||
.into_iter()
|
||||
.rev()
|
||||
.take(3)
|
||||
.sum();
|
||||
println!("{:?}", sum);
|
||||
|
||||
return Ok(());
|
||||
}
|
Loading…
Add table
Reference in a new issue