diff --git a/2020/README.md b/2020/README.md index c8a804b..58723e9 100644 --- a/2020/README.md +++ b/2020/README.md @@ -1,28 +1,29 @@ # [Advent of Code 2020](https://adventofcode.com/2020) -## Progress -- [ ] Day 01 -- [ ] Day 02 -- [ ] Day 03 -- [ ] Day 04 -- [ ] Day 05 -- [ ] Day 06 -- [ ] Day 07 -- [ ] Day 08 -- [ ] Day 09 -- [ ] Day 10 -- [ ] Day 11 -- [ ] Day 12 -- [ ] Day 13 -- [ ] Day 14 -- [ ] Day 15 -- [ ] Day 16 -- [ ] Day 17 -- [ ] Day 18 -- [ ] Day 19 -- [ ] Day 20 -- [ ] Day 21 -- [ ] Day 22 -- [ ] Day 23 -- [ ] Day 24 -- [ ] Day 25 +| Solved | Day | Language | +| :----: | :-: | :------- | +| ✓ | 01 | Rust | +| | 02 | | +| | 03 | | +| | 04 | | +| | 05 | | +| | 06 | | +| | 07 | | +| | 08 | | +| | 09 | | +| | 10 | | +| | 11 | | +| | 12 | | +| | 13 | | +| | 14 | | +| | 15 | | +| | 16 | | +| | 17 | | +| | 18 | | +| | 19 | | +| | 20 | | +| | 21 | | +| | 22 | | +| | 23 | | +| | 24 | | +| | 25 | | diff --git a/2020/day-01/.gitignore b/2020/day-01/.gitignore new file mode 100644 index 0000000..f47240e --- /dev/null +++ b/2020/day-01/.gitignore @@ -0,0 +1,2 @@ +part_one +part_two diff --git a/2020/day-01/common.rs b/2020/day-01/common.rs new file mode 100644 index 0000000..d8945ca --- /dev/null +++ b/2020/day-01/common.rs @@ -0,0 +1,15 @@ +use std::env; +use std::fs::File; +use std::io::Read; + +pub type Result = std::result::Result>; + +pub fn read_file() -> Result> { + let path = env::args().skip(1).next().unwrap(); + + let mut file = File::open(path)?; + let mut content = String::new(); + file.read_to_string(&mut content)?; + + Ok(content.lines().map(|l| l.parse().unwrap()).collect()) +} diff --git a/2020/day-01/inputs/puzzle.txt b/2020/day-01/inputs/puzzle.txt new file mode 100644 index 0000000..5614de8 --- /dev/null +++ b/2020/day-01/inputs/puzzle.txt @@ -0,0 +1,200 @@ +1028 +1987 +1938 +1136 +1503 +1456 +1107 +1535 +1946 +1986 +855 +1587 +1632 +1548 +1384 +1894 +1092 +1876 +1914 +1974 +1662 +1608 +2004 +1464 +1557 +1485 +1267 +1582 +1307 +1903 +1102 +1578 +1421 +1184 +1290 +1786 +1295 +1930 +1131 +1802 +1685 +1735 +1498 +1052 +1688 +990 +1805 +1768 +1922 +1781 +1897 +1545 +1591 +1393 +1186 +149 +1619 +1813 +1708 +1119 +1214 +1705 +1942 +1684 +1460 +1123 +1439 +1672 +1980 +1337 +1731 +1203 +1481 +2009 +1110 +1116 +1443 +1957 +1891 +1595 +1951 +1883 +1733 +1697 +1321 +1689 +1103 +1300 +1262 +1190 +1667 +1843 +1544 +1877 +1718 +1866 +1929 +1169 +1693 +1518 +1375 +1477 +1222 +1791 +1612 +1373 +1253 +1087 +1959 +1970 +1112 +1778 +1412 +1127 +1767 +1091 +1653 +1609 +1810 +1912 +1917 +935 +1499 +1878 +1452 +1935 +1937 +968 +1905 +1077 +1701 +1789 +1506 +1451 +1125 +1686 +1117 +1991 +1215 +1776 +1976 +846 +1923 +1945 +1888 +1193 +1146 +1583 +1315 +1372 +1963 +1491 +1777 +1799 +1363 +1579 +1367 +1863 +1983 +1679 +1944 +1654 +1953 +1297 +530 +1502 +1738 +1934 +1185 +1998 +1764 +1856 +1207 +1181 +1494 +1676 +1900 +1057 +339 +1994 +2006 +1536 +2007 +644 +1173 +1692 +1493 +1756 +1916 +1890 +1908 +1887 +1241 +1447 +1997 +1967 +1098 +1287 +1392 +1932 diff --git a/2020/day-01/inputs/sample.txt b/2020/day-01/inputs/sample.txt new file mode 100644 index 0000000..e3fb011 --- /dev/null +++ b/2020/day-01/inputs/sample.txt @@ -0,0 +1,6 @@ +1721 +979 +366 +299 +675 +1456 diff --git a/2020/day-01/part_one.rs b/2020/day-01/part_one.rs new file mode 100644 index 0000000..117fed3 --- /dev/null +++ b/2020/day-01/part_one.rs @@ -0,0 +1,21 @@ +mod common; + +use common::{read_file, Result}; + +fn main() -> Result<()> { + let entries = read_file()?; + + let mut skip_inner = 0; + + for outer in &entries { + for inner in entries.iter().skip(skip_inner) { + if outer + inner == 2020 { + println!("{}", outer * inner); + return Ok(()); + } + } + skip_inner += 1; + } + + Ok(()) +} diff --git a/2020/day-01/part_two.rs b/2020/day-01/part_two.rs new file mode 100644 index 0000000..fbd02b4 --- /dev/null +++ b/2020/day-01/part_two.rs @@ -0,0 +1,26 @@ +mod common; + +use common::{read_file, Result}; + +fn main() -> Result<()> { + let entries = read_file()?; + + let mut skip_inner = 0; + + for outer in &entries { + let mut skip_innermost = 0; + + for inner in entries.iter().skip(skip_inner) { + for innermost in entries.iter().skip(skip_innermost) { + if outer + inner + innermost == 2020 { + println!("{}", outer * inner * innermost); + return Ok(()); + } + } + skip_innermost += 1; + } + skip_inner += 1; + } + + Ok(()) +}