Rust Day 1
Signed-off-by: Tobias Berger <tobi.berger13@gmail.com>
This commit is contained in:
parent
c266d7c8ce
commit
91e29e57f1
5 changed files with 289 additions and 0 deletions
7
Rust/.gitignore
vendored
Normal file
7
Rust/.gitignore
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Generated by Cargo
|
||||||
|
# will have compiled files and executables
|
||||||
|
debug/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# These are backup files generated by rustfmt
|
||||||
|
**/*.rs.bk
|
5
Rust/day1/Cargo.lock
generated
Normal file
5
Rust/day1/Cargo.lock
generated
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
[[package]]
|
||||||
|
name = "day1"
|
||||||
|
version = "0.1.0"
|
13
Rust/day1/Cargo.toml
Normal file
13
Rust/day1/Cargo.toml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
[package]
|
||||||
|
name = "day1"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["GitHub <noreply@github.com>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "day1"
|
||||||
|
path = "main.rs"
|
200
Rust/day1/input
Normal file
200
Rust/day1/input
Normal file
|
@ -0,0 +1,200 @@
|
||||||
|
1822
|
||||||
|
1917
|
||||||
|
1642
|
||||||
|
1617
|
||||||
|
1941
|
||||||
|
1740
|
||||||
|
1529
|
||||||
|
1896
|
||||||
|
1880
|
||||||
|
568
|
||||||
|
1897
|
||||||
|
1521
|
||||||
|
1832
|
||||||
|
1936
|
||||||
|
611
|
||||||
|
1475
|
||||||
|
1950
|
||||||
|
1895
|
||||||
|
1532
|
||||||
|
1721
|
||||||
|
1498
|
||||||
|
1905
|
||||||
|
1770
|
||||||
|
1845
|
||||||
|
2003
|
||||||
|
1854
|
||||||
|
1705
|
||||||
|
1916
|
||||||
|
1913
|
||||||
|
1956
|
||||||
|
1798
|
||||||
|
1823
|
||||||
|
1955
|
||||||
|
1713
|
||||||
|
1942
|
||||||
|
1710
|
||||||
|
1696
|
||||||
|
1590
|
||||||
|
1966
|
||||||
|
1476
|
||||||
|
1800
|
||||||
|
1672
|
||||||
|
1533
|
||||||
|
1524
|
||||||
|
1957
|
||||||
|
1923
|
||||||
|
1545
|
||||||
|
534
|
||||||
|
1707
|
||||||
|
1760
|
||||||
|
1104
|
||||||
|
1471
|
||||||
|
1947
|
||||||
|
1802
|
||||||
|
1525
|
||||||
|
1931
|
||||||
|
1653
|
||||||
|
1608
|
||||||
|
1937
|
||||||
|
1977
|
||||||
|
1598
|
||||||
|
1470
|
||||||
|
1794
|
||||||
|
1488
|
||||||
|
1786
|
||||||
|
1652
|
||||||
|
1482
|
||||||
|
1603
|
||||||
|
1667
|
||||||
|
1245
|
||||||
|
1478
|
||||||
|
667
|
||||||
|
1948
|
||||||
|
1885
|
||||||
|
547
|
||||||
|
1971
|
||||||
|
1795
|
||||||
|
1910
|
||||||
|
1571
|
||||||
|
1711
|
||||||
|
1727
|
||||||
|
1987
|
||||||
|
1597
|
||||||
|
1586
|
||||||
|
1661
|
||||||
|
1893
|
||||||
|
1873
|
||||||
|
1827
|
||||||
|
1561
|
||||||
|
2006
|
||||||
|
1782
|
||||||
|
1813
|
||||||
|
2000
|
||||||
|
1592
|
||||||
|
1714
|
||||||
|
1849
|
||||||
|
1501
|
||||||
|
1809
|
||||||
|
1751
|
||||||
|
1935
|
||||||
|
1692
|
||||||
|
1697
|
||||||
|
1878
|
||||||
|
1502
|
||||||
|
1738
|
||||||
|
1731
|
||||||
|
1682
|
||||||
|
1690
|
||||||
|
1499
|
||||||
|
1641
|
||||||
|
1925
|
||||||
|
1996
|
||||||
|
1972
|
||||||
|
1886
|
||||||
|
1836
|
||||||
|
1747
|
||||||
|
1841
|
||||||
|
1668
|
||||||
|
715
|
||||||
|
1698
|
||||||
|
1859
|
||||||
|
1637
|
||||||
|
1477
|
||||||
|
1785
|
||||||
|
1695
|
||||||
|
1702
|
||||||
|
1944
|
||||||
|
1631
|
||||||
|
1771
|
||||||
|
1623
|
||||||
|
1892
|
||||||
|
1466
|
||||||
|
1834
|
||||||
|
1899
|
||||||
|
201
|
||||||
|
1801
|
||||||
|
1978
|
||||||
|
1830
|
||||||
|
1591
|
||||||
|
1673
|
||||||
|
1949
|
||||||
|
1846
|
||||||
|
1677
|
||||||
|
1657
|
||||||
|
1576
|
||||||
|
1817
|
||||||
|
1851
|
||||||
|
1894
|
||||||
|
1754
|
||||||
|
1604
|
||||||
|
1568
|
||||||
|
1730
|
||||||
|
1985
|
||||||
|
1614
|
||||||
|
1980
|
||||||
|
1554
|
||||||
|
1997
|
||||||
|
1960
|
||||||
|
1983
|
||||||
|
1848
|
||||||
|
1883
|
||||||
|
1968
|
||||||
|
1729
|
||||||
|
1716
|
||||||
|
628
|
||||||
|
1472
|
||||||
|
1676
|
||||||
|
1943
|
||||||
|
1821
|
||||||
|
1681
|
||||||
|
1619
|
||||||
|
1644
|
||||||
|
842
|
||||||
|
1492
|
||||||
|
1633
|
||||||
|
1921
|
||||||
|
775
|
||||||
|
1861
|
||||||
|
1584
|
||||||
|
1974
|
||||||
|
585
|
||||||
|
1898
|
||||||
|
1560
|
||||||
|
1708
|
||||||
|
1927
|
||||||
|
1563
|
||||||
|
1872
|
||||||
|
1876
|
||||||
|
1865
|
||||||
|
1535
|
||||||
|
1994
|
||||||
|
1756
|
||||||
|
1662
|
||||||
|
1621
|
||||||
|
1993
|
||||||
|
1825
|
||||||
|
1679
|
||||||
|
1959
|
||||||
|
1691
|
||||||
|
1875
|
64
Rust/day1/main.rs
Normal file
64
Rust/day1/main.rs
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io;
|
||||||
|
use std::io::prelude::*;
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
fn parse_input<B: BufRead>(buf: B) -> Vec<u64> {
|
||||||
|
buf.lines()
|
||||||
|
.map(|line| {
|
||||||
|
line.expect("Failed to read line.")
|
||||||
|
.parse()
|
||||||
|
.expect("Failed to parse line input.")
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn puzzle_a(nums: &[u64]) -> Option<u64> {
|
||||||
|
for a in nums {
|
||||||
|
for b in nums {
|
||||||
|
if a + b == 2020 {
|
||||||
|
return Some(a * b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
fn puzzle_b(nums: &[u64]) -> Option<u64> {
|
||||||
|
for a in nums {
|
||||||
|
for b in nums {
|
||||||
|
for c in nums {
|
||||||
|
if a + b + c == 2020 {
|
||||||
|
return Some(a * b * c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
fn open_file<P>(filename: P) -> io::Result<io::BufReader<File>>
|
||||||
|
where
|
||||||
|
P: AsRef<Path>,
|
||||||
|
{
|
||||||
|
let file = File::open(filename)?;
|
||||||
|
Ok(io::BufReader::new(file))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> Result<(), &'static str> {
|
||||||
|
let buffer = open_file("input").unwrap();
|
||||||
|
let puzzle_input = parse_input(buffer);
|
||||||
|
|
||||||
|
println!(
|
||||||
|
"Part A:\n{}",
|
||||||
|
puzzle_a(&puzzle_input).expect("No solution for A found.")
|
||||||
|
);
|
||||||
|
println!("--------");
|
||||||
|
println!(
|
||||||
|
"Part B:\n{}",
|
||||||
|
puzzle_b(&puzzle_input).expect("No solution for B found.")
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
Loading…
Reference in a new issue