Added day 1 in Rust and Uiua
This commit is contained in:
commit
af727f4c76
9 changed files with 187 additions and 0 deletions
101
2019/inputs/day1.txt
Normal file
101
2019/inputs/day1.txt
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
119031
|
||||||
|
111204
|
||||||
|
75773
|
||||||
|
95544
|
||||||
|
69987
|
||||||
|
147194
|
||||||
|
74024
|
||||||
|
100438
|
||||||
|
86116
|
||||||
|
89945
|
||||||
|
144856
|
||||||
|
123315
|
||||||
|
64102
|
||||||
|
55491
|
||||||
|
95959
|
||||||
|
149174
|
||||||
|
66810
|
||||||
|
134674
|
||||||
|
88921
|
||||||
|
124270
|
||||||
|
60833
|
||||||
|
125667
|
||||||
|
84885
|
||||||
|
57688
|
||||||
|
89059
|
||||||
|
126854
|
||||||
|
93633
|
||||||
|
103791
|
||||||
|
104295
|
||||||
|
137762
|
||||||
|
101216
|
||||||
|
138060
|
||||||
|
103271
|
||||||
|
95822
|
||||||
|
102000
|
||||||
|
66821
|
||||||
|
126916
|
||||||
|
104629
|
||||||
|
87710
|
||||||
|
79852
|
||||||
|
87852
|
||||||
|
149281
|
||||||
|
92055
|
||||||
|
50969
|
||||||
|
62626
|
||||||
|
112069
|
||||||
|
68560
|
||||||
|
66131
|
||||||
|
139961
|
||||||
|
89456
|
||||||
|
100536
|
||||||
|
51338
|
||||||
|
51075
|
||||||
|
112858
|
||||||
|
134878
|
||||||
|
137702
|
||||||
|
60091
|
||||||
|
111576
|
||||||
|
70517
|
||||||
|
131524
|
||||||
|
56162
|
||||||
|
148346
|
||||||
|
62696
|
||||||
|
110191
|
||||||
|
141106
|
||||||
|
54858
|
||||||
|
66248
|
||||||
|
86402
|
||||||
|
132012
|
||||||
|
96367
|
||||||
|
95319
|
||||||
|
133879
|
||||||
|
115031
|
||||||
|
77875
|
||||||
|
129470
|
||||||
|
146650
|
||||||
|
70048
|
||||||
|
147454
|
||||||
|
123076
|
||||||
|
74563
|
||||||
|
94228
|
||||||
|
59920
|
||||||
|
147986
|
||||||
|
92398
|
||||||
|
51890
|
||||||
|
92686
|
||||||
|
110452
|
||||||
|
85205
|
||||||
|
67482
|
||||||
|
87931
|
||||||
|
69535
|
||||||
|
73948
|
||||||
|
114576
|
||||||
|
65958
|
||||||
|
53081
|
||||||
|
132809
|
||||||
|
76088
|
||||||
|
74553
|
||||||
|
121820
|
||||||
|
121214
|
||||||
|
|
||||||
1
2019/rust/.gitignore
vendored
Normal file
1
2019/rust/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
/target
|
||||||
7
2019/rust/Cargo.lock
generated
Normal file
7
2019/rust/Cargo.lock
generated
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aoc2019"
|
||||||
|
version = "0.1.0"
|
||||||
11
2019/rust/Cargo.toml
Normal file
11
2019/rust/Cargo.toml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[package]
|
||||||
|
name = "aoc2019"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
path = "src/lib.rs"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
41
2019/rust/src/bin/day1.rs
Normal file
41
2019/rust/src/bin/day1.rs
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
use aoc2019::util::read_file;
|
||||||
|
use std::io;
|
||||||
|
|
||||||
|
fn fuel(mass: i32) -> i32 {
|
||||||
|
mass / 3 - 2
|
||||||
|
}
|
||||||
|
|
||||||
|
fn total_fuel(mass: i32) -> i32 {
|
||||||
|
let f = fuel(mass);
|
||||||
|
if f <= 0 {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
f + total_fuel(f)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1(lines: &Vec<String>) -> i32 {
|
||||||
|
lines
|
||||||
|
.iter()
|
||||||
|
.map(|l| str::parse::<i32>(l.as_str()))
|
||||||
|
.map(Result::unwrap)
|
||||||
|
.map(fuel)
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2(lines: &Vec<String>) -> i32 {
|
||||||
|
lines
|
||||||
|
.iter()
|
||||||
|
.map(|l| str::parse::<i32>(l.as_str()))
|
||||||
|
.map(Result::unwrap)
|
||||||
|
.map(total_fuel)
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> io::Result<()> {
|
||||||
|
let file = read_file()?;
|
||||||
|
println!("{}", part1(&file));
|
||||||
|
println!("{}", part2(&file));
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
2
2019/rust/src/lib.rs
Normal file
2
2019/rust/src/lib.rs
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
pub mod util;
|
||||||
|
|
||||||
13
2019/rust/src/util.rs
Normal file
13
2019/rust/src/util.rs
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
use std::{env, fs, io};
|
||||||
|
|
||||||
|
pub fn read_file() -> Result<Vec<String>, std::io::Error> {
|
||||||
|
let first_arg = env::args()
|
||||||
|
.nth(1)
|
||||||
|
.ok_or_else(|| io::Error::new(io::ErrorKind::Other, "No file given to read!"))?;
|
||||||
|
|
||||||
|
Ok(fs::read_to_string(first_arg)?
|
||||||
|
.lines()
|
||||||
|
.map(String::from)
|
||||||
|
.filter(|s| !s.is_empty())
|
||||||
|
.collect())
|
||||||
|
}
|
||||||
10
2019/uiua/day1.ua
Normal file
10
2019/uiua/day1.ua
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
~ "util.ua" ~ Lines
|
||||||
|
|
||||||
|
# Util
|
||||||
|
Mass ← -2⌊÷3
|
||||||
|
|
||||||
|
# Part 1
|
||||||
|
/+ Mass ⋕ Lines "../inputs/day1.txt"
|
||||||
|
|
||||||
|
# Part 2
|
||||||
|
/+∵(/+↘¯1◌⍢(⊃Mass⊂) (>0) :[]) ⋕ Lines "../inputs/day1.txt"
|
||||||
1
2019/uiua/util.ua
Normal file
1
2019/uiua/util.ua
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Lines ← ⊜□≠@\n.&fras
|
||||||
Loading…
Add table
Reference in a new issue