Update
This commit is contained in:
BIN
2023/.DS_Store
vendored
Normal file
BIN
2023/.DS_Store
vendored
Normal file
Binary file not shown.
1215
2023/Cargo.lock
generated
Normal file
1215
2023/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
11
2023/Cargo.toml
Normal file
11
2023/Cargo.toml
Normal file
@@ -0,0 +1,11 @@
|
||||
[package]
|
||||
name = "adventofcode"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
reqwest = { version = "0.12.1", features = ["blocking"] }
|
||||
line-span = "0.1.5"
|
||||
linecount = "0.1.0"
|
||||
1000
2023/input_sources/day1.txt
Normal file
1000
2023/input_sources/day1.txt
Normal file
File diff suppressed because it is too large
Load Diff
4
2023/input_sources/day1short.txt
Normal file
4
2023/input_sources/day1short.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
lnmqnine855four17twoeightwolx
|
||||
lnkffrtmv9t
|
||||
2mkzrqlmhsveight1sjtwo2
|
||||
twotwotwotwothree
|
||||
100
2023/input_sources/day2.txt
Normal file
100
2023/input_sources/day2.txt
Normal file
@@ -0,0 +1,100 @@
|
||||
Game 1: 12 blue; 2 green, 13 blue, 19 red; 13 red, 3 green, 14 blue
|
||||
Game 2: 12 blue, 1 red, 1 green; 1 red, 12 blue, 3 green; 5 green, 1 red, 9 blue; 1 red, 7 blue, 4 green
|
||||
Game 3: 1 red; 12 blue, 15 red; 1 green, 10 red, 2 blue; 1 green, 3 red, 9 blue
|
||||
Game 4: 6 blue, 5 green; 2 blue, 6 green, 6 red; 11 blue, 5 red; 6 green, 11 red, 7 blue; 4 green, 10 red; 1 green, 7 red, 13 blue
|
||||
Game 5: 10 green, 1 red, 2 blue; 3 red, 4 green, 4 blue; 5 green, 5 red
|
||||
Game 6: 1 green, 6 blue, 14 red; 9 blue, 5 red; 14 red, 12 blue
|
||||
Game 7: 1 green, 9 red, 8 blue; 9 blue, 1 green, 6 red; 1 green, 15 blue, 19 red
|
||||
Game 8: 9 red, 7 green, 2 blue; 6 red, 17 green; 18 red, 16 green, 2 blue; 10 red, 14 green
|
||||
Game 9: 1 blue, 11 red, 9 green; 8 red, 1 blue, 9 green; 4 blue, 16 red, 9 green; 8 green, 3 blue, 6 red; 8 green, 11 red, 3 blue; 11 red, 2 blue
|
||||
Game 10: 8 green, 14 blue; 1 red, 6 blue, 9 green; 6 blue, 4 green, 1 red; 16 green, 9 blue
|
||||
Game 11: 6 green, 11 blue, 1 red; 10 green, 1 red; 7 blue, 2 green, 1 red
|
||||
Game 12: 3 green, 5 blue, 2 red; 14 blue, 16 green, 4 red; 8 green, 14 blue, 4 red
|
||||
Game 13: 5 red, 12 blue, 2 green; 2 green, 1 red, 9 blue; 1 red, 2 blue, 3 green; 3 green, 3 red, 7 blue; 2 red, 13 blue; 1 red, 10 blue, 2 green
|
||||
Game 14: 5 blue, 1 red, 2 green; 8 blue, 1 green, 1 red; 1 blue, 2 green
|
||||
Game 15: 14 blue, 9 green, 1 red; 2 red, 15 blue, 12 green; 1 blue, 2 green, 1 red; 1 red, 16 green, 15 blue; 1 red, 12 green, 8 blue; 1 red, 17 blue
|
||||
Game 16: 7 red, 1 green, 18 blue; 7 blue, 5 green, 17 red; 14 blue, 8 red, 6 green
|
||||
Game 17: 4 green, 5 blue; 5 green, 1 red, 7 blue; 3 green, 6 blue, 4 red; 2 green, 5 blue; 9 green, 6 red, 6 blue
|
||||
Game 18: 8 red, 6 blue; 4 blue, 19 red; 4 blue, 9 red; 9 blue, 10 red; 2 green, 9 blue, 13 red; 3 blue, 7 red
|
||||
Game 19: 8 green, 2 red, 17 blue; 11 blue, 4 red, 5 green; 8 blue, 8 green, 10 red; 9 green, 4 blue, 2 red; 4 green, 10 red, 6 blue
|
||||
Game 20: 9 green, 3 blue, 1 red; 5 blue, 16 green, 3 red; 3 green, 3 red; 2 blue, 1 red, 5 green
|
||||
Game 21: 7 green, 1 red, 10 blue; 7 green, 5 blue, 7 red; 7 green, 9 blue
|
||||
Game 22: 5 red, 2 blue, 9 green; 6 red, 11 green; 6 green, 6 red
|
||||
Game 23: 14 red, 2 blue, 9 green; 9 green, 1 blue, 4 red; 9 red, 1 green, 1 blue; 6 green; 3 blue, 1 green, 9 red; 1 blue, 2 red
|
||||
Game 24: 3 red, 7 green, 6 blue; 1 green, 5 blue; 6 blue, 1 red, 2 green; 5 red, 1 blue, 4 green; 6 red, 2 blue, 11 green; 2 green, 2 red, 1 blue
|
||||
Game 25: 5 green, 1 red, 3 blue; 3 blue, 6 green, 3 red; 3 red, 4 green, 1 blue; 6 green, 1 blue, 9 red; 2 blue, 2 red, 1 green
|
||||
Game 26: 3 green, 4 red, 12 blue; 2 red, 1 green, 15 blue; 7 red, 16 green, 4 blue; 11 blue, 11 green, 3 red; 8 green, 15 blue, 10 red
|
||||
Game 27: 9 red; 10 red, 2 blue; 3 red; 8 red, 1 green, 2 blue; 1 red, 2 blue; 1 blue, 4 red
|
||||
Game 28: 5 blue, 8 red, 5 green; 10 blue, 4 red, 5 green; 8 red, 14 blue, 10 green; 10 blue, 4 red, 1 green; 5 red, 17 green, 4 blue
|
||||
Game 29: 16 green, 11 red, 5 blue; 11 red, 14 blue, 13 green; 13 blue, 8 green; 3 red, 18 green, 15 blue
|
||||
Game 30: 2 red, 4 blue, 8 green; 6 green, 2 red, 2 blue; 6 green, 6 blue, 2 red
|
||||
Game 31: 2 red, 1 blue, 16 green; 10 green, 1 blue, 7 red; 1 blue, 14 green, 7 red; 2 blue, 1 green, 1 red; 6 red, 13 green; 2 blue, 6 red, 10 green
|
||||
Game 32: 4 green, 4 blue; 1 green, 5 red; 6 green, 1 red; 3 green, 5 red, 2 blue; 4 red, 1 blue, 4 green; 6 green, 2 blue, 6 red
|
||||
Game 33: 5 blue, 2 red, 1 green; 5 blue; 1 blue, 1 green, 10 red; 8 red, 3 blue, 1 green
|
||||
Game 34: 15 blue, 7 green; 12 green, 17 blue; 10 blue, 11 green; 1 red, 5 blue, 9 green; 2 red, 10 blue, 11 green
|
||||
Game 35: 2 red, 6 blue; 2 red, 5 blue, 4 green; 2 red, 8 green, 10 blue
|
||||
Game 36: 4 red, 9 green, 3 blue; 4 red, 6 green; 6 red; 11 red, 4 green
|
||||
Game 37: 3 blue, 12 green, 14 red; 3 red, 5 green, 7 blue; 2 blue, 2 green, 16 red
|
||||
Game 38: 17 blue, 16 red, 8 green; 4 green, 17 blue, 4 red; 8 red, 7 blue, 6 green; 2 blue, 9 green, 17 red; 10 blue, 8 green, 11 red
|
||||
Game 39: 10 blue, 1 red, 4 green; 4 green, 4 red, 6 blue; 11 blue
|
||||
Game 40: 5 green, 17 blue; 11 blue, 4 green, 7 red; 2 green, 6 red, 13 blue; 7 blue, 12 green, 16 red; 15 red, 3 green, 8 blue; 12 green, 3 blue, 12 red
|
||||
Game 41: 13 blue, 3 red, 1 green; 2 green, 10 red; 1 blue, 5 red, 3 green; 5 green, 16 blue; 9 blue, 2 green; 14 blue, 4 green, 5 red
|
||||
Game 42: 2 blue, 15 green, 3 red; 3 red, 17 green; 6 red, 1 blue, 8 green
|
||||
Game 43: 8 green, 9 red, 3 blue; 1 blue, 13 red; 5 red, 1 blue, 6 green; 2 red, 2 blue; 17 red, 2 blue, 6 green
|
||||
Game 44: 10 red, 3 blue; 10 blue, 5 green; 4 red, 4 blue, 1 green; 16 blue, 6 red, 7 green; 3 green, 12 blue
|
||||
Game 45: 12 blue, 2 red; 2 blue, 3 red, 2 green; 8 blue, 3 green; 4 green, 8 blue, 5 red; 3 red, 2 blue, 1 green; 1 red, 2 blue, 7 green
|
||||
Game 46: 1 blue, 11 red, 6 green; 2 blue, 11 red, 6 green; 8 red, 5 green
|
||||
Game 47: 2 blue, 9 red; 1 green, 5 blue; 10 red, 2 blue, 2 green; 10 red, 3 green, 3 blue; 3 red, 6 blue, 2 green; 1 red, 1 green, 5 blue
|
||||
Game 48: 1 red, 7 green; 1 blue, 10 green, 5 red; 4 red, 8 green; 10 red, 10 green; 2 red, 16 green; 11 red, 14 green, 1 blue
|
||||
Game 49: 1 red, 1 blue, 5 green; 6 green, 5 red; 3 blue, 4 red, 3 green; 3 red, 5 green, 2 blue; 3 blue, 3 red
|
||||
Game 50: 17 red, 1 green, 7 blue; 4 blue, 1 red, 5 green; 10 red, 13 blue; 17 red
|
||||
Game 51: 2 red, 1 green; 1 green, 10 blue, 2 red; 5 red, 1 green, 7 blue; 7 blue, 1 red; 9 blue, 5 red, 2 green
|
||||
Game 52: 8 green, 1 blue; 14 green, 1 red; 10 green, 1 red
|
||||
Game 53: 17 green, 6 blue; 17 blue, 9 green; 1 red, 12 blue
|
||||
Game 54: 4 blue, 7 red, 9 green; 7 red, 2 green; 14 green, 10 red, 3 blue; 9 green, 6 blue, 5 red; 2 blue, 3 green, 11 red
|
||||
Game 55: 11 green, 4 red; 14 green; 3 red, 3 green; 3 green, 4 red, 1 blue; 15 green, 6 red, 2 blue; 4 red, 3 blue, 15 green
|
||||
Game 56: 8 blue, 5 red, 9 green; 11 green, 5 blue, 6 red; 1 green, 1 blue, 7 red; 7 green, 4 red, 1 blue; 9 blue, 5 red, 1 green; 5 red, 2 blue
|
||||
Game 57: 11 green, 19 blue, 5 red; 15 green, 5 red, 18 blue; 16 green, 5 red, 10 blue; 19 blue, 3 red; 9 green, 8 blue
|
||||
Game 58: 4 blue, 12 green; 11 green, 4 blue; 6 blue, 6 green; 1 red, 2 green; 11 green, 3 blue; 13 blue, 6 green
|
||||
Game 59: 10 blue, 1 red; 1 green, 4 blue; 4 blue
|
||||
Game 60: 7 red, 2 green, 6 blue; 1 green, 13 red, 12 blue; 9 blue, 9 green, 8 red
|
||||
Game 61: 7 green, 3 red, 2 blue; 1 red, 1 blue; 5 green, 3 blue; 4 blue, 1 red, 4 green
|
||||
Game 62: 1 green, 8 blue, 6 red; 7 blue, 3 red, 12 green; 2 blue, 7 red, 6 green
|
||||
Game 63: 3 red, 2 green; 3 green, 4 blue, 9 red; 3 blue, 3 green, 16 red; 4 red, 1 blue
|
||||
Game 64: 10 red, 2 green, 15 blue; 4 red, 14 green; 6 red, 14 green, 2 blue
|
||||
Game 65: 11 red, 14 green, 5 blue; 7 blue, 14 green, 15 red; 1 blue, 14 green; 4 green, 4 blue, 7 red
|
||||
Game 66: 6 blue, 9 green, 6 red; 6 blue, 2 red, 4 green; 3 blue; 8 blue, 5 green, 8 red; 17 blue, 11 green; 12 green, 11 blue, 4 red
|
||||
Game 67: 8 red, 4 blue, 6 green; 4 blue, 8 red, 2 green; 1 green, 6 red, 2 blue; 10 red, 1 green, 2 blue; 1 blue, 5 red; 2 red, 1 green, 2 blue
|
||||
Game 68: 10 green, 9 red, 13 blue; 2 blue, 2 green, 4 red; 11 red, 13 blue; 4 green, 2 red, 8 blue
|
||||
Game 69: 16 red; 12 red, 1 green, 4 blue; 1 green, 14 red, 9 blue; 12 blue, 2 green, 13 red; 14 red, 2 green, 10 blue; 11 blue
|
||||
Game 70: 1 red, 19 green; 4 blue, 6 green; 12 green, 2 red
|
||||
Game 71: 9 green, 2 blue, 3 red; 5 red; 1 red, 1 blue, 5 green
|
||||
Game 72: 1 green, 19 red; 12 red, 1 green, 1 blue; 16 red, 6 blue; 14 red, 7 blue; 11 blue, 1 green, 13 red; 16 blue, 4 red
|
||||
Game 73: 1 green, 1 red, 2 blue; 8 green, 2 red, 4 blue; 7 blue, 7 green, 7 red
|
||||
Game 74: 1 blue, 1 green; 1 red; 1 red, 5 blue, 4 green; 2 blue, 1 red; 1 blue
|
||||
Game 75: 8 green, 1 red; 3 blue, 1 red, 5 green; 12 green
|
||||
Game 76: 8 green, 6 red, 2 blue; 7 red, 1 blue; 2 blue, 9 green, 1 red; 8 red, 13 green; 12 green, 2 red; 7 green, 5 red
|
||||
Game 77: 3 blue, 1 green, 10 red; 13 red; 1 blue, 13 red, 1 green
|
||||
Game 78: 2 red, 3 green, 14 blue; 3 red, 16 blue, 6 green; 3 blue, 3 red, 9 green; 4 blue, 11 green; 6 green, 2 blue; 2 red, 10 green, 11 blue
|
||||
Game 79: 5 green, 10 blue, 2 red; 16 green, 15 blue, 1 red; 1 red, 11 green; 1 red, 11 blue, 16 green; 7 blue, 18 green
|
||||
Game 80: 9 blue, 10 green; 13 green, 9 blue; 1 red, 5 green, 5 blue; 13 green, 5 blue, 1 red
|
||||
Game 81: 9 green, 15 red, 11 blue; 11 blue, 9 red, 5 green; 2 green, 11 blue, 19 red; 14 green, 15 red, 5 blue
|
||||
Game 82: 4 green, 6 red, 13 blue; 5 blue, 5 red, 4 green; 2 green, 7 blue
|
||||
Game 83: 12 blue, 8 red; 6 red, 1 blue, 1 green; 7 red, 1 green, 1 blue; 6 red, 1 green, 9 blue; 10 blue, 3 red; 1 red, 5 blue
|
||||
Game 84: 9 blue, 13 red; 8 blue, 1 green; 9 blue, 1 green; 3 blue, 5 red, 1 green
|
||||
Game 85: 14 green, 5 blue, 8 red; 1 blue, 5 green, 1 red; 10 red, 7 blue, 17 green; 3 blue, 6 green; 6 red, 5 blue, 4 green; 5 blue, 4 green, 6 red
|
||||
Game 86: 14 red; 20 red, 3 blue; 1 green, 12 blue, 15 red; 16 red, 13 blue; 13 red, 12 blue; 2 blue, 20 red
|
||||
Game 87: 2 blue, 2 red, 10 green; 8 green, 9 red, 1 blue; 11 red, 1 green, 4 blue; 13 red, 1 blue; 11 green, 16 red, 3 blue
|
||||
Game 88: 5 green, 4 red, 1 blue; 3 blue, 8 red, 10 green; 11 green, 7 red, 4 blue; 11 green, 5 blue, 4 red; 9 red, 9 green; 4 blue, 6 green, 9 red
|
||||
Game 89: 2 blue, 2 red, 5 green; 2 red, 2 blue, 3 green; 2 red, 1 blue, 7 green; 6 green, 1 red, 2 blue
|
||||
Game 90: 4 green, 1 blue, 5 red; 2 blue, 2 red, 10 green; 2 green, 8 red, 1 blue; 10 green, 5 red; 2 red, 3 green, 2 blue
|
||||
Game 91: 16 blue, 5 red, 15 green; 4 green, 7 red, 3 blue; 4 red, 8 green, 12 blue; 4 green, 8 red, 17 blue
|
||||
Game 92: 13 red, 2 blue, 12 green; 19 green, 7 red; 17 green, 2 blue, 3 red; 6 blue, 11 red, 10 green; 6 red, 15 green, 3 blue; 6 blue, 20 green, 11 red
|
||||
Game 93: 2 blue, 3 green; 1 blue, 4 red; 1 red
|
||||
Game 94: 3 red, 5 green, 6 blue; 7 blue, 5 green, 6 red; 9 blue, 1 green, 2 red; 4 blue, 1 green, 4 red
|
||||
Game 95: 8 green, 9 red, 2 blue; 7 green, 7 red; 2 green, 4 blue, 6 red; 6 blue, 2 red, 2 green
|
||||
Game 96: 11 blue, 4 red; 1 green, 3 red, 14 blue; 2 green, 3 red, 8 blue; 7 red, 1 green, 3 blue; 8 blue, 6 red, 2 green; 9 blue, 3 red, 3 green
|
||||
Game 97: 5 green, 13 red, 7 blue; 2 blue, 12 red, 6 green; 10 blue, 11 red, 3 green; 4 green, 11 blue, 15 red; 8 green, 16 blue, 1 red; 15 blue, 4 red, 5 green
|
||||
Game 98: 3 blue, 1 red; 4 blue; 2 green, 1 blue; 2 green, 1 red, 5 blue
|
||||
Game 99: 4 green, 3 blue, 9 red; 6 blue, 5 red, 3 green; 2 green, 4 blue, 7 red; 8 red, 4 blue; 2 green, 15 red; 4 red, 5 blue, 3 green
|
||||
Game 100: 8 red, 4 blue, 4 green; 10 blue, 3 red, 4 green; 10 green, 4 red; 18 red, 9 blue, 2 green; 12 red, 4 green, 2 blue
|
||||
5
2023/input_sources/day2short.txt
Normal file
5
2023/input_sources/day2short.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
|
||||
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
|
||||
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
|
||||
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
|
||||
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
|
||||
140
2023/input_sources/day3.txt
Normal file
140
2023/input_sources/day3.txt
Normal file
@@ -0,0 +1,140 @@
|
||||
.......................661.........................485..565.......344.......325.....................................841.....725.............
|
||||
....*609..131................512.......................*................536*..............462/..-...60..424.........@....$.*................
|
||||
.316.........*.......39..................@.630......377........919...........98................789..*..*..............788..2.......=..564...
|
||||
...........431...535...*...............622.-..../.................*..........*.......682...........108.116....@...-...............299.......
|
||||
.....................428.....378...844.........416...............586.537=..27..........*......$..............871...331..................492.
|
||||
...878....390....%..............*.*...................739.496=.................867......867..867.........................344......487.../...
|
||||
...../.....*...558........@..535...644..................+.........404..605.......*................................%.....*...................
|
||||
........................381............729..726....578........10...*..........818..............................929....934..........119......
|
||||
.53....31..........734-..........847*.................#.........*...........#............217............/..321....................*.........
|
||||
.......=.............................509.315.654.................60.........925.747*559..*.....430....226..*...................290...848=...
|
||||
..........=.......546......664..507......../....#.......337.............................94........=.........359....528*996..................
|
||||
.....351...638.......*.............*433............337.....................226...859........../............................378..............
|
||||
.......*..........648.........183.........126........*...........208.954......=....*.......626........499*..........803.../....642.235......
|
||||
.518*...813..990..............*..............*......699...133....+...............68...............79......838.447...*..........*...*........
|
||||
................+.696*.........586.6......243.............*..........$224.............392...275.....-.........*...699...#177..230.593.&.....
|
||||
...........$326.......683.-761.......491......./.........26...........................*.....=.........56.305.262.......................150..
|
||||
....=.......................................41.908.........................819.785.....276.....&.................%..........................
|
||||
.618......401$...............-......................599..124......34+.........*..............676..................342...........473.........
|
||||
....................889......888..454....723/.........*.................141*.....958.......................................416.....*94......
|
||||
....212.............-................%.........826=....552..................569....*............................728........=............143.
|
||||
...*......287...................=60.............................872.....886.......171....437......815..680.........*.............633....+...
|
||||
..234....*.....687..........432........203/.....*...275.65.........*341.@...........................*....%.246......272.....922*..../.......
|
||||
........967.........495.......*....161.......474.97...*..*..84.400.........*295....805......................@...................915.........
|
||||
...419.................*.979...932....*.............729.215.#....*.......81........*......554.263*567..........812..........................
|
||||
.....*..............458....$.........682......................179................348..906.................428.../............798............
|
||||
...668..................-.........................552............./..................=.......+...........@..........99........*..85.4.......
|
||||
........29......938..594......107........*171.98.....*..896....$..491...........+..........412..12.............326.*.....705..4....*........
|
||||
..........*....................+......332......@....949..*...750.......$..974....342.............*....558......#............*..........794..
|
||||
.......459....342*.........637...........................273.....658..601....*................735....*...............%....627....889...*....
|
||||
.697..............131....................718.................689.............450....390............994.............793.............*..241...
|
||||
..............991........89..........14.......*.................*912.............39.+...698.............................953*240...87........
|
||||
..324.............618.....*...328......*....538.%.....307.920.........515...............*...................................................
|
||||
.....*386...........*...780..*.......475.........719...*...*...................910...410................384.....999........*756.............
|
||||
....................268.......701.............72........63.43...193.....+..................674...670$....*........*......95.......893.......
|
||||
...16.........................................*....663........../....407.....................*........258....264=.298........202*..../......
|
||||
...&......574................187.......88...53.........931........@......&759....$..672....385..............................................
|
||||
.....938........192......297....*.723...*.................%......930...........692................283.....................=349.........&981.
|
||||
......*....................&.207....*...843.736.........................260..........677..389........*..............954..........&..........
|
||||
......603........713.............745..................411.359.922.......*.............*......*.......718..888..561..=.........182..206......
|
||||
............896....*.....173*383.......%...145...943...*.....*.........622..382*.......180.141............*...........................*.....
|
||||
.....89........*...238.............+.714....*........575../.........................@...............$.....539.......114*721.645........471..
|
||||
.......*307....968..............250......836.....498......59....909..601*..........117...........435../........944..........................
|
||||
............*...............56*.................+....498..........-......730.882..........975..........680........*...95......152....$517...
|
||||
...........150.......142.......473.713.+262...........=...577.266...736..........668..$.........70*111......811.165..@......................
|
||||
.......741.............*.97.......................=.........*.......*....-654..........428..157................................748*823......
|
||||
.........*............48...*.....772....892.....350....$.....760.148.............................440...........731*563......................
|
||||
........260..............227...............*..........795..................649.....27.107...219.@.....23@...............226......369........
|
||||
...41............&...................+...136.....546.......$.920...................+...*...&....../.........981...........@.......*.....454.
|
||||
...*......635%....782...............560............*....896...........854..+...........694......340...@.498*....................41..959*....
|
||||
...486..........................63..................810......641....+....*..532....642.......$.......90.....................76=.............
|
||||
..........325.....................@..............@...........-....539.407.............$......9...........550................................
|
||||
...787..$....*.$105.126.+810.........497.576...538.............................718.......................*...+....317..519..................
|
||||
.......303.493...........................................-...........462..647..*...........%..+875....641..644.....*......*.....154.588.....
|
||||
................./.....-......44.........%...@140.......228...43......*....*..132.794...628.......................669....110....*.....*.....
|
||||
....579...........348..32.491*.......#...646.......506..........*708......74........#........117..............24*............698....532.....
|
||||
......*.........................902.722............=....=........................................700....610......878....*...................
|
||||
.../..885.../..351.............*.........................799.....814*238......*339....428*825......./................965.862......125.......
|
||||
.723......243.@........852..........757...784.472..814.......603...........151........................279.617....849........................
|
||||
........................*......./............*.......*.........*....#.............91.......246...384.....*........%.........................
|
||||
.218.659....113+........128....691...................972......571....934............*......*...................................442..236.....
|
||||
....*...............455.............868......&379.........................594.......80....654.....................421.456...................
|
||||
............2*535......*410...553........409......235.173..779......116.....*.................&........*646.418*.....*.................596..
|
||||
.70#.361......................./....493....$..........*...-.....440.........317...865...323....696..202..........952.......187.....%....#...
|
||||
..........%...767......318............*................1.............../...........*......*................241......@.147...*.....389.......
|
||||
..921.....301..*........*............67.540.../....149.........=........827.....=.347....956..........980...............$...204.............
|
||||
...*............341......154.............*..695.....$.....20.183..............177..................$...$...66......699..........495......296
|
||||
.460........&.......+............%.......4......+........*.......................................347.........*36...*....912.......*..765....
|
||||
............142..163......885..480...............805.%...587...........289.310*389........$843..........-..........417....*.....628....*....
|
||||
.............................*............434........803........482......-.........556.........&.........294...33$.........79........358....
|
||||
.......................407@...873...............+..................*542....../.41....$./758....176.................*........................
|
||||
.........842......................442*766.......284.........842...........856...*......................647......422.94..............@.......
|
||||
....$........799............................&.......433.318*.....576..........111....................................................788....
|
||||
.720...168.....%........840..............989....................*.......=............468..419...........198.................................
|
||||
......*..................+..392..............282.......&...............591..........&....*....101.340....-.....187.....-....................
|
||||
.....746...........................499...779...*....456...........@....................346....*......%...........*..693.......94..72........
|
||||
.........970..671..696./....................&..999......124..246.434...........................173........@.....165.......925*.../..........
|
||||
..628.............*....608.....827-.......*..............#....*........634...../418......185.......311...808.........372*............824....
|
||||
..........694...360.....................43.645.................935........*516...........*....555.....*..................33.........-.......
|
||||
............*............+........576#.........810*592..740.....................#665..968........*499.775..882+..............998............
|
||||
....=303.....433.280......147..82.........................*..............................................................751*...............
|
||||
.................$......................608...560..827...227....................448*..@......................@529.376...........@...........
|
||||
...........465.....#.............554.....#.......#..#.......................401.......714...../.192.999..................466...28.161....351
|
||||
..............&....706..157.679.@..........741..............818.811=..............412.......376...&..*.......=..............................
|
||||
.441.....955....63.........*........=........+.............*..............#..........*..............399.......613.......444........*972.....
|
||||
........@......*..................697..........600.&965...354.#.....392...827..665....326.................323...........&.......483.........
|
||||
................381........972..........373*..*................9...&...........................289.........*................................
|
||||
...........................*....+.............239......................863....................*..........341.....*329...................$...
|
||||
801..+...638.659........358...29..695.....@........241...680.....863..........................310.#...........941........@216........311....
|
||||
...*.358.*...*....................@....786....*330................&.........842........11..........279...................................686
|
||||
.932..........666....533..712..............801.............64.544.....*972.....*353....-..809...........524...........397...............*...
|
||||
.........795+.......*.......*......394=................586......*.........................................&...........................562...
|
||||
...................629.......184........796..............=................-946.348.../670............63.........%...........................
|
||||
.....428-................918.........@..............#.............850.889.........*..............673..#..110.221..........337.560...-.......
|
||||
.....................926*.........809.........=......627.............*..........344..........343.*........*.......832.......*....*...216....
|
||||
.....624.....+................................78............915..701.....876.........734.402.....181.193.460.639.....*...558...138..........
|
||||
.../...*...91....804..324..985......#429......................*..*.............892....................*......*...321.727...........134......
|
||||
...991............*.........*.............39...........%.633.213.623..........&...........601.919.....378.318...*............@34............
|
||||
........183.....#.399...+..297..973...622..*........855../......................+684../......*................335.................733.......
|
||||
..........@..576......597........*.....*....686....................371..98..23$......119................................=.777......*........
|
||||
.................901%......*...412......102...........754...332.47*......*......861+......539................495@....801...*..404...777.....
|
||||
.........577..........577..978.................990......*...#............236.............@..............339............../......*........534
|
||||
..169.....*..687........*..........598..........*..349@.723.....864..........972............196.....491*........$........335.372............
|
||||
.........339..=......633........29...*.........4............251*.....$..........*.250.........$.908..............356.230...........324.386..
|
||||
.................943.............-.....=............................325...726.690.*................/.......646........*...214.......=.......
|
||||
.........&468.......*..................999.......944.........751..........*.......219.837.107..............*...=....271..*..............283.
|
||||
......*..........210.....*390.....917*.....996*.....+..790...-.........128...............*................905.277.......320....936..835.....
|
||||
...640.581....*.......167.............392......29......*..........885............................369..................&...........*.$...#...
|
||||
..............708..........106.223...................817.........*............277.........&.........@..795.-296....172..........633......229
|
||||
.......82..........@679.......*....*806.................../....10.............*.........456...........*.................95...........3......
|
||||
..........536....................12........=914..458.......214..........995..97.-735........370.......334..876=.........*.......950#........
|
||||
.........*.............=.....10.......837...........+..518.................*...................*........................761.................
|
||||
......414..=.........794.............=................*...................813.394...815.718....759........403...............738.............
|
||||
............463...........-..238.419............810.41...........452..2=..................&..............&........435.................468...
|
||||
........................103....*..........................+...11.&....................927...........%.......282...*...234.....229......*....
|
||||
......301+....................678............100.......954.....*...@....182....@.........*....737...916....-....890....@..118*.......625....
|
||||
............67...312..865+.............910.....*...382.......516....973....*..874.500..153.....*............................................
|
||||
.....373+...*.....*...............979..........469....*375..............765...................99....................733................897..
|
||||
..........828.....669......=.....*...........................................284.189...$..371......*168..............%.......762............
|
||||
..........................4..565.226........562@....190......281....257.......*.......889./......57........./...#.......210..*..............
|
||||
......47.......120.............#...................*...........&....*.....169.549............%............414..744......%....503.#208.......
|
||||
........*.................643.........397...........350..........289....&...*........&.....323.....+..................................856...
|
||||
.....*...............458....#........................................104.....931..855..............89..469.....882...........=.........*....
|
||||
..594.777......390...*...........422........355..............654............................81........*...........*......282..630....195....
|
||||
..................*.568.912........*........*.....377..........*......*877.............419..*.....148.768.......471....+....*...............
|
||||
.......393......163..........298.820............@..................582.......823......=...........*....................952..................
|
||||
..........*268.......*733.59...@.............403..........................................14&...502...............481.........$.....231.....
|
||||
........#.........970.....*......#....981...........711.261=.................=.......................701..244................323.....*......
|
||||
.396....993.............557.......46.....*...........+..........714*659.....134........623..........*............677.730..............846...
|
||||
......#......91...405........296..........295..............@..*.......................#..............740............*........%..............
|
||||
.......345..=........-.792....*..834................100.891....764...697........570......*....620*.@.....................508..295...........
|
||||
...*13................../...340...#..134..............#................*..........*.......247......660....607....705.....=...........165....
|
||||
.........521..824...222.............*......372..290.....844.825-.......867..820...627...........................*............128...../...777
|
||||
...629...*....#..................788...535....*..-.......*.........361......................*......805.......732....914....../...-......@...
|
||||
...*.....743...........853..................637.......880...-..849*........425............946..590....*302...........*.........748..........
|
||||
...120.%.......271..............862.....70................207................=......233.......*..................443..263...................
|
||||
........680....../.825.....&793...........*....................-720.............555........184..509.......22......*.............811.........
|
||||
..........................................772.272......................134.........*..374.........*............573........*.......*.........
|
||||
934..231.....*....821...230.....981..............%........707..370....*.....634%..787..*..........93..909..70..........199.59...490.........
|
||||
.......*....525.........-........*...747...676=..../.......*..........829...............324..952.........%...*..........................%...
|
||||
.....189.........................791.............236........687.868........................................505..............713......777....
|
||||
10
2023/input_sources/day3short.txt
Normal file
10
2023/input_sources/day3short.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
467..114..
|
||||
...*......
|
||||
..35..633.
|
||||
......#...
|
||||
617*......
|
||||
.....+.58.
|
||||
..592.....
|
||||
......755.
|
||||
...$.*....
|
||||
.664.598..
|
||||
BIN
2023/src/.DS_Store
vendored
Normal file
BIN
2023/src/.DS_Store
vendored
Normal file
Binary file not shown.
146
2023/src/day1/mod.rs
Normal file
146
2023/src/day1/mod.rs
Normal file
@@ -0,0 +1,146 @@
|
||||
use crate::utils::read_lines;
|
||||
use std::collections::HashMap;
|
||||
|
||||
pub fn process() -> u32 {
|
||||
process_day_1_part_2()
|
||||
}
|
||||
|
||||
fn process_day_1() -> u32 {
|
||||
let file_path = "./input_sources/day1.txt";
|
||||
let mut to_sum: Vec<u32> = vec![];
|
||||
if let Ok(lines) = read_lines(file_path) {
|
||||
for line in lines.flatten() {
|
||||
let numbers = extract_numbers_from_string(line.clone());
|
||||
to_sum.push(numbers);
|
||||
}
|
||||
}
|
||||
let sum: u32 = to_sum.iter().sum();
|
||||
sum
|
||||
}
|
||||
|
||||
fn process_day_1_part_2() -> u32 {
|
||||
let file_path = "./input_sources/day1.txt";
|
||||
let mut to_sum: Vec<u32> = vec![];
|
||||
if let Ok(lines) = read_lines(file_path) {
|
||||
for line in lines.flatten() {
|
||||
let line_result: u32 = process_line(line);
|
||||
to_sum.push(line_result);
|
||||
}
|
||||
}
|
||||
|
||||
// //println!("\nNumbers to Sum: {:?}", to_sum);
|
||||
let sum: u32 = to_sum.iter().sum();
|
||||
sum
|
||||
}
|
||||
|
||||
fn process_line(input_line: String) -> u32 {
|
||||
//println!("{}", input_line);
|
||||
let mut num_string: String = String::new();
|
||||
let mut collector: Vec<(u32, u32)> = vec![];
|
||||
let mut r_collector: Vec<(u32, u32)> = vec![];
|
||||
let targets = HashMap::from([
|
||||
("zero".to_string(), 0),
|
||||
("0".to_string(), 0),
|
||||
("one".to_string(), 1),
|
||||
("1".to_string(), 1),
|
||||
("two".to_string(), 2),
|
||||
("2".to_string(), 2),
|
||||
("three".to_string(), 3),
|
||||
("3".to_string(), 3),
|
||||
("four".to_string(), 4),
|
||||
("4".to_string(), 4),
|
||||
("five".to_string(), 5),
|
||||
("5".to_string(), 5),
|
||||
("six".to_string(), 6),
|
||||
("6".to_string(), 6),
|
||||
("seven".to_string(), 7),
|
||||
("7".to_string(), 7),
|
||||
("eight".to_string(), 8),
|
||||
("8".to_string(), 8),
|
||||
("nine".to_string(), 9),
|
||||
("9".to_string(), 9)
|
||||
]);
|
||||
|
||||
for (target, value) in targets {
|
||||
let found_target: Option<usize> = input_line.find(&target);
|
||||
let r_found_target: Option<usize> = input_line.rfind(&target);
|
||||
|
||||
match found_target {
|
||||
None => {
|
||||
},
|
||||
Some(index) => {
|
||||
collector.push((value, index as u32));
|
||||
//println!("Found {} at {}", value, index);
|
||||
}
|
||||
}
|
||||
|
||||
match r_found_target {
|
||||
None => {
|
||||
},
|
||||
Some(index) => {
|
||||
collector.push((value, index as u32));
|
||||
//println!("Rfound {} at {}", value, index);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
collector.sort_by_key(|k| k.1);
|
||||
let mut first_number: String = String::new();
|
||||
let mut last_number: String = String::new();
|
||||
// Wacky override
|
||||
if input_line.chars().last().unwrap().is_numeric() {
|
||||
last_number = input_line.clone().chars().last().unwrap().to_string();
|
||||
} else {
|
||||
last_number = collector.last().unwrap().0.to_string();
|
||||
}
|
||||
// Wacky override
|
||||
if input_line.chars().nth(0).unwrap().is_numeric() {
|
||||
first_number = input_line.clone().chars().nth(0).unwrap().to_string();
|
||||
} else {
|
||||
first_number = collector.first().unwrap().0.to_string();
|
||||
}
|
||||
//println!("{:?}", String::from(first_number.to_owned() + &last_number).trim().parse::<u32>().unwrap());
|
||||
|
||||
String::from(first_number.to_owned() + &last_number).trim().parse::<u32>().unwrap()
|
||||
}
|
||||
|
||||
fn extract_numbers_from_string(input: String) -> u32 {
|
||||
let mut nums_in_string: Vec<char> = vec![];
|
||||
for char in input.chars() {
|
||||
if char.is_numeric() {
|
||||
nums_in_string.push(char);
|
||||
}
|
||||
}
|
||||
|
||||
let char_count = nums_in_string.len();
|
||||
let number: u32;
|
||||
if char_count == 1 {
|
||||
// add chars to string.
|
||||
let num_string = nums_in_string[0].clone().to_string() + &nums_in_string[0].clone().to_string();
|
||||
// convert to u32.
|
||||
number = num_string.trim().parse().unwrap();
|
||||
} else {
|
||||
let first_item = nums_in_string[0].clone();
|
||||
let last_item = nums_in_string.last().copied();
|
||||
let num_string = first_item.to_string() + &last_item.expect("should be two chars.").to_string();
|
||||
number = num_string.trim().parse().unwrap()
|
||||
}
|
||||
number
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_extract_numbers_from_string() {
|
||||
let expected: u32 = 74;
|
||||
let test_value = String::from("742fiveeightnvjjpx4eight");
|
||||
let actual = extract_numbers_from_string(test_value);
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_process() {
|
||||
let expected: u32 = 54927;
|
||||
let actual: u32 = process_day_1();
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
76
2023/src/day2/mod.rs
Normal file
76
2023/src/day2/mod.rs
Normal file
@@ -0,0 +1,76 @@
|
||||
use crate::utils::read_lines;
|
||||
|
||||
const RED_MAX: u32 = 12;
|
||||
const GREEN_MAX: u32 = 13;
|
||||
const BLUE_MAX: u32 = 14;
|
||||
|
||||
pub fn process() -> u32 {
|
||||
let file_path = "./input_sources/day2.txt";
|
||||
let mut total: u32 = 0;
|
||||
if let Ok(lines) = read_lines(file_path) {
|
||||
for game in lines.flatten() {
|
||||
total = total + get_color_minimums(game.clone());
|
||||
//println!("{:?}", total);
|
||||
}
|
||||
}
|
||||
total
|
||||
}
|
||||
|
||||
fn get_game_id(input_line: String) -> u32 {
|
||||
let game_section: Vec<&str> = input_line.split(":").collect();
|
||||
let game_section_split: Vec<&str> = game_section[0].split(" ").collect();
|
||||
game_section_split[1].trim().parse().unwrap()
|
||||
}
|
||||
|
||||
fn get_color_minimums(game: String) -> u32 {
|
||||
let split_on_colon: Vec<&str> = game.split(":").collect();
|
||||
let game_results: Vec<&str> = split_on_colon[1].split(";").collect();
|
||||
let mut valid_game: bool = true;
|
||||
|
||||
let mut total: u32 = 1;
|
||||
let mut green_min: u32 = 0;
|
||||
let mut red_min: u32 = 0;
|
||||
let mut blue_min: u32 = 0;
|
||||
|
||||
for game_result in game_results {
|
||||
let selections: Vec<&str> = game_result.split(",").collect();
|
||||
for selection in selections {
|
||||
let split_selection: Vec<&str> = selection.trim().split(" ").collect();
|
||||
let num_selected: u32 = split_selection[0].trim().parse().unwrap();
|
||||
let color_selected: &str = split_selection[1].trim();
|
||||
|
||||
match color_selected {
|
||||
"green" => {
|
||||
if num_selected > green_min {
|
||||
green_min = num_selected;
|
||||
}
|
||||
},
|
||||
"blue" => {
|
||||
if num_selected > blue_min {
|
||||
blue_min = num_selected;
|
||||
}
|
||||
},
|
||||
"red" => {
|
||||
if num_selected > red_min {
|
||||
red_min = num_selected;
|
||||
}
|
||||
},
|
||||
&_ => todo!()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if green_min > 0 {
|
||||
total = green_min * total;
|
||||
}
|
||||
|
||||
if red_min > 0 {
|
||||
total = red_min * total;
|
||||
}
|
||||
|
||||
if blue_min > 0 {
|
||||
total = blue_min * total;
|
||||
}
|
||||
total
|
||||
}
|
||||
|
||||
51
2023/src/day3/mod.rs
Normal file
51
2023/src/day3/mod.rs
Normal file
@@ -0,0 +1,51 @@
|
||||
use crate::utils::read_lines;
|
||||
use linecount::count_lines;
|
||||
use std::io;
|
||||
use std::io::{BufRead, BufReader};
|
||||
use std::fs::File;
|
||||
|
||||
pub fn process() -> u32 {
|
||||
let file_path = "./input_sources/day3short.txt";
|
||||
let mut total: u32 = 0;
|
||||
|
||||
let mut lines_vec: Vec<String> = vec![];
|
||||
if let Ok(lines) = read_lines(file_path) {
|
||||
for line in lines.flatten() {
|
||||
lines_vec.push(line);
|
||||
}
|
||||
}
|
||||
let length: usize = lines_vec.len();
|
||||
|
||||
let mut i = 0;
|
||||
while i < length {
|
||||
let cur_line = &lines_vec[i];
|
||||
println!("{:?}", &lines_vec[i]);
|
||||
|
||||
if i < 9 {
|
||||
let next_line = &lines_vec[i + 1];
|
||||
}
|
||||
if i > 0 {
|
||||
let prev_line = &lines_vec[i - 1];
|
||||
println!("Prev line is {:?}", prev_line);
|
||||
}
|
||||
|
||||
i = i + 1;
|
||||
}
|
||||
total
|
||||
}
|
||||
|
||||
|
||||
fn handle_line(input_line: String) -> String {
|
||||
// Get previous line.
|
||||
// Get next line.
|
||||
// On current line, iterate over each char
|
||||
// build digits and their locations.
|
||||
// For each digit
|
||||
// go to prior line, check if symbol in (place, place +1, place -1)
|
||||
// do the same for the next line.
|
||||
// If a symbol is found, return true for the number
|
||||
// Sum numbers
|
||||
|
||||
// println!("{:?}", input_line);
|
||||
String::from("Hello")
|
||||
}
|
||||
18
2023/src/main.rs
Normal file
18
2023/src/main.rs
Normal file
@@ -0,0 +1,18 @@
|
||||
#![allow(warnings)]
|
||||
mod day1;
|
||||
mod day2;
|
||||
mod day3;
|
||||
mod utils;
|
||||
|
||||
fn main() {
|
||||
|
||||
let day1_results = day1::process();
|
||||
let day2_results = day2::process();
|
||||
let day3_results = day3::process();
|
||||
|
||||
println!("The Answer to Day 1 is: {:?}", day1_results);
|
||||
println!("The Answer to Day 2 is: {:?}", day2_results);
|
||||
println!("The Answer to Day 3 is: {:?}", day3_results);
|
||||
|
||||
}
|
||||
|
||||
10
2023/src/utils/mod.rs
Normal file
10
2023/src/utils/mod.rs
Normal file
@@ -0,0 +1,10 @@
|
||||
use std::fs::File;
|
||||
use std::io::{self, BufRead};
|
||||
use std::path::Path;
|
||||
|
||||
pub fn read_lines<P>(filename: P) -> io::Result<io::Lines<io::BufReader<File>>>
|
||||
where P: AsRef<Path>, {
|
||||
let file = File::open(filename)?;
|
||||
Ok(io::BufReader::new(file).lines())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user