initial commit

This commit is contained in:
Niklas Kapelle 2023-12-09 13:41:00 +01:00
commit 398227a555
Signed by: niklas
GPG Key ID: 4EB651B36D841D16
16 changed files with 2164 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

54
Cargo.lock generated Normal file
View File

@ -0,0 +1,54 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "aho-corasick"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
dependencies = [
"memchr",
]
[[package]]
name = "aoc"
version = "0.1.0"
dependencies = [
"regex",
]
[[package]]
name = "memchr"
version = "2.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
[[package]]
name = "regex"
version = "1.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
dependencies = [
"aho-corasick",
"memchr",
"regex-automata",
"regex-syntax",
]
[[package]]
name = "regex-automata"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"

9
Cargo.toml Normal file
View File

@ -0,0 +1,9 @@
[package]
name = "aoc"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
regex = "1.10.2"

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# Advent of Code 2023 in rust
[AoC2023](https://adventofcode.com/2023)

1000
input/1.txt Normal file

File diff suppressed because it is too large Load Diff

100
input/2.txt Normal file
View File

@ -0,0 +1,100 @@
Game 1: 1 green, 1 blue, 1 red; 1 green, 8 red, 7 blue; 6 blue, 10 red; 4 red, 9 blue, 2 green; 1 green, 3 blue; 4 red, 1 green, 10 blue
Game 2: 9 red, 7 green, 3 blue; 15 green, 2 blue, 5 red; 10 red, 3 blue, 13 green
Game 3: 3 red, 1 blue, 4 green; 6 red, 3 green, 2 blue; 6 red, 16 blue, 1 green
Game 4: 2 blue, 2 green, 19 red; 3 blue, 11 red, 16 green; 18 blue, 13 green, 20 red; 18 red, 12 blue, 16 green; 8 green, 16 blue, 16 red
Game 5: 8 green, 1 red, 12 blue; 10 green, 6 red, 13 blue; 1 red, 3 blue, 6 green; 14 blue, 2 red, 7 green
Game 6: 1 red; 1 blue; 2 green, 1 blue; 1 red, 3 blue; 1 red, 2 blue, 2 green; 1 green, 7 blue, 1 red
Game 7: 2 red, 1 blue, 5 green; 5 green, 1 red; 3 red, 7 blue; 8 blue, 1 red, 4 green
Game 8: 6 green, 4 blue; 10 green, 7 blue; 5 blue; 1 red, 7 blue; 11 green, 1 red
Game 9: 2 green, 2 blue; 8 red, 5 blue, 6 green; 11 green, 6 blue, 8 red; 4 blue, 3 green, 8 red; 2 green, 10 red, 5 blue
Game 10: 2 blue, 8 green, 2 red; 10 blue, 3 green; 12 blue, 1 green, 2 red; 9 green, 2 red; 3 green, 2 red, 5 blue
Game 11: 12 red, 1 green, 1 blue; 7 green, 1 red; 2 blue, 1 red, 3 green; 15 green, 8 red
Game 12: 4 red, 10 green, 4 blue; 3 red, 10 blue, 18 green; 5 red, 2 blue, 18 green; 8 blue, 16 green, 2 red
Game 13: 3 green, 1 blue, 8 red; 8 blue, 2 green, 6 red; 6 blue, 3 green, 11 red; 2 red, 13 blue; 1 blue, 5 red, 2 green; 6 red
Game 14: 3 blue, 15 green, 10 red; 7 green, 6 red, 6 blue; 8 red, 13 green, 4 blue; 4 green, 1 blue, 9 red; 9 red, 7 blue
Game 15: 8 green, 9 blue, 4 red; 8 blue, 4 green, 4 red; 8 green, 7 blue, 10 red
Game 16: 12 red, 8 blue, 2 green; 4 green, 10 red, 4 blue; 9 green, 4 blue, 5 red; 7 red, 1 blue
Game 17: 1 blue, 4 red, 6 green; 1 blue; 6 red, 8 blue, 10 green; 2 blue, 2 red, 3 green; 8 green, 14 red, 6 blue
Game 18: 5 blue, 1 green, 5 red; 1 green, 11 blue; 3 green, 18 red, 8 blue
Game 19: 2 blue, 2 red, 16 green; 5 blue, 2 red, 17 green; 10 green, 6 blue; 2 blue, 11 green; 15 green, 3 blue, 5 red; 18 green, 8 red
Game 20: 7 red, 6 green, 3 blue; 7 red, 16 green; 1 blue, 6 green; 1 green, 7 red
Game 21: 10 red, 10 blue; 16 green, 4 blue, 7 red; 2 red, 9 blue, 11 green
Game 22: 12 green, 7 red, 2 blue; 6 blue, 3 red, 10 green; 11 red, 12 green, 3 blue; 8 red, 3 green, 3 blue; 3 red, 4 green, 7 blue
Game 23: 7 red, 9 blue; 5 red, 1 green, 4 blue; 8 green, 9 blue, 10 red; 8 green, 9 red, 11 blue
Game 24: 4 blue, 2 red, 15 green; 1 green, 4 blue; 7 green, 2 blue
Game 25: 12 red, 12 green; 11 red, 5 blue, 15 green; 15 green, 5 red, 3 blue; 15 green, 6 blue, 10 red; 3 blue, 1 green, 5 red
Game 26: 7 red, 18 green, 6 blue; 3 red, 2 green, 7 blue; 1 red, 1 green, 1 blue; 16 green, 5 red, 2 blue; 5 blue, 4 red; 12 red, 2 blue
Game 27: 1 blue, 5 red, 5 green; 11 blue, 7 red, 5 green; 8 blue, 7 green, 4 red; 3 green, 3 blue; 14 green, 1 blue
Game 28: 12 green, 1 red, 1 blue; 17 green, 1 red, 1 blue; 1 red, 1 blue, 15 green
Game 29: 15 green, 10 blue; 6 green, 5 blue, 2 red; 19 green, 5 blue
Game 30: 10 red, 13 green, 2 blue; 5 blue, 14 green, 1 red; 9 green, 14 red, 3 blue; 14 blue, 14 green, 17 red; 15 blue, 9 green, 16 red
Game 31: 6 green, 1 blue, 8 red; 12 red, 8 green; 5 red, 8 green; 9 green, 11 red
Game 32: 6 red, 7 green; 12 green, 1 blue, 2 red; 2 red, 3 green; 4 red, 13 green; 7 red, 9 green
Game 33: 3 red, 7 blue, 10 green; 4 blue, 3 red, 15 green; 6 red, 7 blue, 18 green; 5 red, 10 green, 10 blue; 2 blue, 6 red, 10 green; 7 blue, 3 green, 6 red
Game 34: 1 red, 6 blue, 3 green; 2 green, 13 blue, 2 red; 2 red, 7 green, 5 blue; 4 red, 2 blue, 5 green; 3 red, 4 blue, 3 green
Game 35: 3 red, 4 blue; 3 green, 6 red, 2 blue; 8 green, 4 blue, 3 red; 11 red, 4 blue, 3 green; 5 green, 1 blue, 6 red; 8 red, 7 green
Game 36: 2 blue, 8 red, 2 green; 11 green, 14 red; 14 red, 1 green; 7 green, 2 blue, 11 red
Game 37: 2 green, 10 red; 1 green, 5 red; 5 red, 11 green; 1 blue, 11 green, 2 red
Game 38: 11 red, 1 green, 11 blue; 9 red, 1 green; 5 red, 2 blue, 1 green; 2 red, 6 blue
Game 39: 3 red; 2 green, 18 red, 2 blue; 2 green; 6 red, 2 green; 12 red; 3 green, 11 red
Game 40: 3 blue, 4 red; 2 red; 7 red, 1 green, 2 blue; 1 green, 1 blue; 5 green; 2 green, 2 red, 1 blue
Game 41: 5 green, 3 blue, 10 red; 6 green, 3 blue, 12 red; 2 blue, 5 green, 7 red; 2 blue, 3 green, 2 red
Game 42: 11 green, 1 red; 6 green, 4 red; 4 red, 4 blue, 7 green; 11 green, 5 red, 5 blue
Game 43: 1 blue; 6 green, 16 blue; 7 green, 1 red; 2 red, 15 green, 7 blue; 2 red, 16 green, 3 blue; 3 red, 14 blue
Game 44: 3 green, 1 red, 5 blue; 9 blue, 1 red; 14 blue; 7 blue, 1 green, 2 red
Game 45: 1 blue, 1 red; 1 blue, 1 red; 3 green, 1 red; 1 green, 1 blue
Game 46: 1 green, 8 red, 2 blue; 13 blue, 7 red, 2 green; 3 red, 4 blue; 2 green, 18 blue, 5 red; 4 red, 5 green, 9 blue; 3 red, 7 blue, 1 green
Game 47: 8 blue, 1 red, 8 green; 2 red, 6 green, 1 blue; 2 green, 6 blue, 5 red; 6 blue, 6 red, 6 green; 6 green, 9 blue, 7 red
Game 48: 5 blue, 14 green, 8 red; 7 blue, 10 green, 7 red; 9 green, 9 blue, 6 red; 9 green, 5 blue, 17 red
Game 49: 10 green, 6 blue, 2 red; 3 blue, 5 green, 4 red; 8 red, 8 blue, 11 green; 5 red, 6 green, 5 blue
Game 50: 3 red, 2 green; 1 red, 8 blue; 2 red, 2 green, 3 blue
Game 51: 4 green, 8 red; 8 red, 5 blue, 13 green; 3 red, 11 blue, 14 green; 5 blue, 11 green, 3 red; 5 red, 9 blue, 11 green; 6 green, 4 red, 12 blue
Game 52: 2 green, 1 red, 1 blue; 3 blue, 2 green, 2 red; 1 green, 3 blue, 4 red; 2 blue; 8 red, 2 blue
Game 53: 18 blue, 4 green, 9 red; 6 blue, 9 green; 14 blue, 9 green, 9 red
Game 54: 2 red, 7 blue, 3 green; 6 green, 3 red, 2 blue; 1 blue, 3 green, 3 red; 2 green, 4 red, 9 blue
Game 55: 3 green, 6 blue; 6 green, 8 blue, 6 red; 5 green, 3 red; 4 blue, 8 green, 1 red; 1 red, 2 blue
Game 56: 4 green; 2 blue, 4 green, 1 red; 3 blue, 6 green
Game 57: 15 red, 3 green; 15 red, 1 blue, 2 green; 15 red, 1 green
Game 58: 1 red, 5 blue; 5 green; 6 green, 8 blue, 2 red; 1 red, 6 blue, 6 green
Game 59: 3 green, 8 blue, 5 red; 1 green, 12 blue, 4 red; 2 green, 18 blue; 2 red, 4 green; 16 blue, 3 red, 1 green
Game 60: 7 green, 6 blue, 2 red; 6 blue, 2 red, 4 green; 11 green, 5 blue; 4 green, 4 blue, 3 red; 2 red, 7 green, 8 blue; 6 green, 4 red, 1 blue
Game 61: 6 green, 6 red; 1 green, 3 blue; 6 green, 1 red, 7 blue; 5 red, 19 green, 7 blue
Game 62: 3 red, 4 green; 2 red, 4 blue; 1 red, 13 blue, 5 green
Game 63: 2 red, 13 green, 4 blue; 10 green, 5 red, 10 blue; 13 blue, 6 red, 3 green
Game 64: 5 blue, 2 green; 1 blue, 1 red, 6 green; 3 blue, 11 green; 2 blue, 8 green, 1 red
Game 65: 4 red, 5 green, 2 blue; 2 blue, 4 red, 1 green; 3 red, 5 green, 4 blue; 6 red, 3 blue; 3 blue, 2 green, 5 red; 2 green, 3 red
Game 66: 14 red, 17 green, 1 blue; 2 red, 12 green, 2 blue; 1 blue, 4 green, 14 red
Game 67: 7 green, 4 red, 10 blue; 11 blue, 4 green; 7 green, 2 red, 3 blue; 11 blue, 3 red, 9 green
Game 68: 5 blue, 4 red; 10 blue, 8 green, 5 red; 1 green, 1 red, 10 blue
Game 69: 1 red, 15 blue, 2 green; 16 blue, 15 green; 1 red, 15 green, 14 blue; 2 red, 5 green, 11 blue; 5 green, 1 red, 13 blue; 2 blue, 16 green
Game 70: 1 red, 2 blue, 9 green; 2 green, 1 red; 7 green, 4 blue
Game 71: 5 blue, 1 green; 2 green, 5 blue; 2 blue, 1 red, 1 green; 1 red, 5 blue; 1 red
Game 72: 5 green, 5 blue; 8 green, 3 red; 7 blue, 8 green
Game 73: 1 green, 4 red, 3 blue; 5 green, 5 blue, 3 red; 8 blue, 7 green, 1 red; 3 blue, 3 red, 9 green; 13 green, 2 red, 10 blue
Game 74: 2 red, 4 green, 5 blue; 3 blue, 6 green, 4 red; 2 blue, 6 green, 5 red
Game 75: 10 red, 20 green, 14 blue; 9 blue, 15 green, 17 red; 8 green, 18 blue, 6 red
Game 76: 7 green, 1 red, 9 blue; 1 green, 3 red; 3 red, 3 green; 4 blue, 20 red, 9 green; 12 red, 7 blue
Game 77: 1 blue, 9 green, 7 red; 5 green, 7 red; 4 red, 1 green, 1 blue; 6 green, 3 red, 3 blue; 3 blue, 5 green, 18 red
Game 78: 11 red, 4 green, 4 blue; 12 red, 3 green, 4 blue; 11 red, 4 green, 13 blue; 8 red, 5 blue, 6 green
Game 79: 1 blue, 16 red; 9 red, 2 green, 2 blue; 2 blue, 12 red; 3 green, 12 red
Game 80: 2 blue, 3 green, 5 red; 5 red, 8 blue, 3 green; 10 blue, 8 red, 8 green; 5 blue, 4 red
Game 81: 1 green, 3 red; 6 blue; 6 red, 1 green, 8 blue; 1 green, 8 blue
Game 82: 4 blue, 2 red; 7 blue, 10 green, 3 red; 7 green, 1 red
Game 83: 12 blue, 9 green; 10 green, 7 blue; 7 green, 1 red, 12 blue; 5 green, 12 blue
Game 84: 1 green, 2 blue, 1 red; 2 green, 9 red; 14 red, 1 blue, 2 green; 2 green, 9 red; 4 blue, 2 green, 9 red
Game 85: 1 blue, 8 red, 8 green; 1 green, 4 red, 4 blue; 8 red, 7 green, 18 blue; 5 green, 3 red, 15 blue; 11 blue, 1 red, 4 green; 4 green, 3 red, 1 blue
Game 86: 14 green, 11 red, 14 blue; 9 green, 14 blue; 12 red, 4 green, 13 blue; 14 green, 9 blue, 2 red; 5 red, 17 green, 1 blue
Game 87: 3 red, 3 green, 7 blue; 3 green, 2 red, 20 blue; 12 green, 9 blue; 3 blue, 3 red, 8 green; 12 green, 9 blue, 2 red
Game 88: 4 green, 1 red, 4 blue; 1 green, 3 red, 1 blue; 2 green, 3 blue, 3 red; 5 green, 1 blue
Game 89: 8 blue, 1 red; 4 red, 6 blue, 1 green; 12 blue, 3 red; 1 red, 4 blue; 3 red, 5 blue, 1 green; 7 red, 7 blue
Game 90: 3 red, 2 green; 4 blue, 13 red; 1 blue, 7 red
Game 91: 8 blue, 2 red, 9 green; 5 blue, 17 green; 2 green, 7 blue, 1 red; 8 blue, 11 green, 3 red; 2 red, 5 blue, 1 green
Game 92: 8 red, 11 blue; 7 green, 9 blue, 2 red; 6 red, 3 green, 3 blue; 4 green, 8 blue, 2 red; 9 blue, 12 green, 8 red; 6 red, 14 blue
Game 93: 4 blue, 1 red, 3 green; 7 green, 1 red, 3 blue; 6 green, 1 red, 3 blue; 3 blue, 10 green, 1 red; 3 blue, 7 green
Game 94: 11 red, 13 green, 3 blue; 4 green, 15 red, 5 blue; 1 red, 7 green
Game 95: 4 green, 10 blue, 6 red; 4 green, 9 blue; 8 blue, 9 red, 5 green; 7 green, 12 blue; 12 blue, 8 green, 3 red; 2 green, 5 red
Game 96: 2 red, 2 green, 1 blue; 1 red, 4 green; 1 green
Game 97: 4 red, 5 green; 5 blue, 3 red; 8 blue, 2 green, 1 red
Game 98: 1 blue; 2 green, 1 red; 5 red, 2 green; 4 red, 1 green; 2 red, 2 green, 2 blue
Game 99: 6 blue, 5 red, 2 green; 9 red, 1 blue; 2 green, 2 red, 5 blue; 10 blue, 2 green; 11 blue, 1 green, 4 red
Game 100: 1 blue, 13 green, 14 red; 11 green, 11 blue, 7 red; 2 red, 1 blue, 2 green; 10 blue, 15 red

140
input/3.txt Normal file
View File

@ -0,0 +1,140 @@
....................................18..........889.270.....748.280...997.................617..............622........763............476....
...529......434.....191..489...717...@.....................&....................939*7.....*....................606............760....*......
....*...473....*221................$........182......812........493.84....793..........794.......589..407..41...*.....................68....
..380.................553..559..105.....749.............*..........*.........*.............-968....@.....*..*....908..603...................
.........................................#...600.........441..#833...490....366.........................225..488........&...456.........224.
........288=......896*469..........831..........*....................*..............#...@.146.......*.............790#......%...194....@....
..730.........................250+......./......359....=.462..............138...#.49..713.-........342...604*676.........=.....*.........418
....*....907.......526................274...........346.....*.876..........-..725.............376......................541...600.....366*...
.....747...*..........*......56$...10........422........-.86.....*.......................728./............*.................................
.........486.........349............*..........=......696....$.............850&......906*......831.....539.195.........202..................
..............592.............................................592....+.847.......676......365..=......................*........469.%........
.542............*...............385....60.................329......657..@......=..*....&...........355.........=....52.........*....352.....
.............994......937...................45.....48........*..............835...791..654....................75.............523............
...................&..............269.486.....+...*......&....954.........#........................246&...&..............203......693.......
.....262..........920...248.454......*...........289...822.........530...569..............................256.......929....*......*.........
........%............../.........................................../..............+..57.@............616=...........*...462...198.757.......
...............65........=.........764*.....$581.727........62.......4.....796..280......444.807...............174@.20................512...
.........877....*...687..187.522.......853..........*321.....*........*345...........513.....=.......849..........................@....*....
.........*...635......*........=..............................380...........77...44*..*................#......*......484.....65.886.........
.....153.........@.&.....320........96..619....510......221.............139..*........957..977......20.....232.20......&.....*..............
......*...397*.610..479...*....=....%.....*.......*.............839.......*................*............*.................144........#554...
..510...................927.....384........714...286....................799.....733.........832......815.187.....*....470...................
........892..................................................645.427.............%......562...................133.442....*906...............
.........=..........803............577.......%.....447..185.........*957.637*97..............132...............................83.258@..$...
...........=55......+....+...435.......930...143.............475................./..............#......................=..675...%......709..
777....................841..*...........*......................*........*.........859...../...............640%..955..903.*..................
..............639/...........803.829.....877........#.........716....873....387.........857..837.................*.......390................
.................................*...............994......................%....*.............&.......749.........718.174.....138..697...463.
.....................697...873#.435......*141...........914*656....@......414..981.....541.......%....*...+.#.........*......&....+.........
.....................*................544.......524.............446.......................+.397..486....603.463......497....................
.........161........412....273..218..............*..80............................708.......=....................899........+......-........
............*..435*.........-..$.........666..401.....*897.214..472..499............*...955......................@...867....607.491..43@....
666%.851..653......44...............152....................*....@.....*..........294.....*...313...237....580...............................
............................989....*.....954.....69.....488../.......90.495*..........697....*.......*.....*..686.......=.......594*981.....
.....104..#...................=.....773...$../.....*396.....959.............272...........433........889.821.....*759.469...................
.......*..865.318.@812........................267...............969.............................758........................913........646...
......132......*.........*699......+...............+.......126......468.....651............424........270.765.....53...965.*...19...........
..............725.....449.......337..187........862.............553*........*....=282.28....*........*....*........*.....%.779..&....218*...
.....744...36.....203.......452.......%..846........&......................................811..501..342...891.....776...................395
.................$.....567&...@..689.......%.......619..392.........847#..#.....236*833............*.........................408............
............./.....732............*........................*..............568................375..561..-270..111....=..565..................
...........801............221....336...493....263..81*.....981...........................449*....................809......*239...........686
...................+.........*87......*..........#....510...........20*684.../..387.....................................*...........132.....
.......674......&..364...........734.141.854*290...........................572.*......878...929.141.#.......526...919.646..*..........*.....
..............980...............*...............................500...229......876....*..............220.....*.....*........809......522....
394....374......................194......660.....172..............&.....*...........774...................367......452..952.................
.......*...................918/............*.....*.......220........776.542..............843..857....560....................................
........728.......@951.668.........651......589.857.........../.....*.........354....509.......@........*.................+.....151.........
......-......262.........#.....*95...................878./...563.642.............#.......................586........638..933....=...........
504.454.......*............540..........524..........*...531...........942...................632@.830.........302..-................%.......
.........498..357..........*....&..........%.......340.........925.......*....623.707.479............*36....%........+.....659*149.401.117..
34..................608.....156.747...602@...............................748..*....*..$............*.........565.....93................*....
........426.................................60.938...........................615.328.....818....143.118..................*.@...........916..
...............547..............25*32.......*..*.......64..-813..........405.........802...*............188............246.236..............
652................*426...................74.....822...*.................*...533....*....764..............*....................%............
....920.64......437......598....738..#..............+..44...625...*....879......*..879.......668.#.......509...385..123....677..553.62......
....*....+.783..........*..........*.552...534...............*.....312........=.........@...-....819............#..-..........*.............
....779.......&....21..582......264.........*.............564...............561........811...........................943....68..$...........
.....................&.....................915.472*918.................848.......943.........803....................*..........386..........
...........................62........668..........................*801.*.........*...............878.......212....613.......................
.......208.......302..313*...*........*...........&.717........237.....11.........551.569.................*...............717...............
...742*......886*.........15.402....806...84...527.....*....=................650......*.....56.....401...276......964......-.....@..........
..........................................*.........411...277.722.337.........*.....915.252*........*................+..........356....553..
.......*...2.........406...............922.....=605............*............403......................316..........84.......%..........=.....
.......385.+....%893........200............150...........420.548.......+111...........70............................*675.895................
...........................+.......198-...@.........532...........23..........349#....*......#...............................920.........844
.....#.....387/.............................31..638..*....580.....#...........................397..720..........161...+.......*..628....*...
......816..............669....36..#393..848..........884.+...........&676.....876*341...565%.......*..........*....#...914...356..-..210....
...............646........&..$.........*...................542....................................370......686.567..........................
............../....94................414......18.............................861....*.....878..........24@.............875=.693*320..864.989
...................*.........665..............*...595..........201......738..+...784..187....*237..../..............................*.......
......236-.......126.....641*..../............486.*.....638.............................*.%.......242....*153....+.........63.837.723.41....
...........35....................114...............661....-....534.........626*......796..28..........579......367..78.929...*..............
......108.........271*144.........................................*............5.....................................*.*.......669.533..704.
.........*635................#..@947.......290.....544.............707...................465..632.....771...181........471.380*......*......
.....114..........89$.....699...........=....*........=.....416...........................&.....$......$..........365...............131.....
.......-.............................410....64......*.........*.........&....684.....15.....317...340*..............*.......................
.........26.609........152........................94.498.....26......671.......*.221*..........*......718...824.....56...........915........
..218..............707*.......786.....839................790.....192.........181......836....287..............%.......................-.....
......937.722...............%.........*...378$...........*.........@.449..............%............226...........&...........428.......341..
.795....*...&..185..405.....60.121....159.......275...996............*....981.....710........363...%...528....-.888....*641...*....880......
...-..806.......*.....*......................@.....#......545..467...289..*.........*....681..........*.....86......326.......664.&.........
.............221.....142...860+....933..653..291......52&../..*............300.%...811...*..................................................
......................................-....*.....861.........149...............673......762........./284..588..................%.....316....
..373......290..............................665.....*................&.............&552.....51.............=.......105.......162.......*....
...-........*.....388........%...772....................=...57....163..932..41...............*...693.116*......#.....*..............434.....
......*489...248..*........395...=.....................676..#..........*...................835...........570.199..678.......................
780...............713................952...479...379..................83.554.........919.......486..980...............984.$468.....720......
..........66..-.....................*.......*....*...........................380%.....$.........*..........899*..118..............*.........
............*..694........382....793.........668.92.....747.......49.....&..........#.....284...462....303........*....518......50.....798..
...*146..642.......@880...*............79=.............*.....93....&...885...785..780.......*..........=...-.....663..................*.....
533...........996.........352..................619%...200......+......................142....408....=....634............379*491.588@..183...
........$127........970...............902..........................943.649............$..........909.........619............................
................-..*....640............*.......-459..#.....446......&.....*.934.....#....313............/....*........509...473..901....132.
..........*..415..805..*.....786.....12...............863...*...........674....$...296.....&...474......281...326.......&....*......$.......
........909...........136.......@.........645................961................................/...250...............$................*554.
...*.........589....................253..../...166.....&429.........96......568*684.%186...............*958........678..............466.....
.759............*96..........658.......*......*...............105...-....................428.............................=...73.............
......54*...................+......168.592..536.=................*8...671........753+.......*.................74........564....*............
.304.....728..764................=...*...........804.575....266........*.....................94......27.316....=.-644.*.......209...485.....
.....997.......*.........#....792...855.................#......*169...496./615........683.......225.*..................474............$.395.
............573....206.477...................*158..........702....................298../......*...=..100....................714.........*...
448...............*..................769...27........691..$.......178....675......*........980.28...............*727...%.....@...201.545....
............223...561..........261.....*.............*................+...........610.250....................496......408..........*........
....@775.....*............&.....@....195..........303..+.............141..865..............629..+....659...................855*....958......
...........407........92...22................493......605..................@..........477...*....160...................743.....163..........
......................../......*......602@......=..+.......*....668$..245................*...731..........69.....213.....*........./....%...
................213*........903.75..........64......945...221.........+.......740........739..........393*...301*......562...../...53...4...
...164&.....145.....580.......................*................425........900......828*............................*........536.............
...............*.....................91....185..................../....................85.................414...890.204.....................
....772............422..*.351...218..................584................263...849...............*...639*.....*..............................
.......*307...897...*..28.*........*.*49.......300....=../72...........%......*.....544......974..@.....214...55.......347.............914..
901............*..67......840...343.........................................447....*...............400...................*..................
.......684..498.........*......................544...347..+........493.............612..........59.........741..........593.........416*....
..........*........369.577........690...770....*......*..983.*160....#.................623*248.#......437..*........258.................275.
....+...603....+...*............./......*...913....609.................823........................62.%....83...........&....................
....538.....356..=..117......-.........556................................*..............920.......*...............746......................
................483.......197...................&....................231...210......92....*.....982..&......199....$........848.$.....$.....
...370..413.........$.............*............556........325...902@....$..........@...182..........933................*.....&...829.402....
......*..%...........524.131..134..163.....185...............*...............................756........282&.774......822...................
....340....373...*...............*...........*....649.20....289....799..549.939.....120..........61............*..345.......778...550.267...
............&...699......&319..170...492....61.....*.......................*.....+.................*.........345.....@........*...+.........
534.............................................144..849.......174......*........219.....$......140...476..................970..............
.../....681............444.....819$...................*..=305../.....413.95...............589.................229...235................644..
...........-.....28.......*403................&....548.............&...........17..........................33..........+........962.........
373..........500....%429.....................291........*....881.296.....163*....*..............796...585....&.............802..*.......138.
................*..................983&................809.....*.............417.999....$.......*...............633.........*...322....*....
......907..$921.............665...........731...............903.........................638..662..............-..........495.........130.9..
.........*......168............&..353.....-..........639.........#...........349......................660....914...570......................
...%......695..*....679...........=..........$...958.+.....494..369..........*...........................*44........*.........964......548..
...826.........268..*.....675..............136....-...................650.964....728.823.403..................842.983..........*......*.....
...................328................................519.....210.......................*....143.....*46....../.................241..55.....
.......855$...199.......526.....849...764*294..........#.....*.....280..........261.885.........#.434...................610.................
...............=...............+...................498.......936......*..831.......*.......&...........462.939+..439.......*845.....443.....
.....@360.842......986%.902-.....21.307....234*......*...324.......505....*.............315..............*.............................*....
..........*....................*.*....*..............42..*................474...../919................50.674..713................./..27.....
........249....291...........448.622..228.......308.........189...............629........-...................*............594..127......782.
..................*173..817.....................*.......91.....*..#................*649...492...400.........17...878.....*..........950.....
...32.674......-........%.....402/...........610..%.....*.....549..853...........96.................=.............*....779.......@..........
.............885.................................600.456...........................................679.............16.........392.....841...

197
input/4.txt Normal file
View File

@ -0,0 +1,197 @@
Card 1: 24 76 32 40 51 61 89 6 30 60 | 30 69 24 86 6 8 92 61 51 88 63 67 32 62 15 49 22 77 40 27 89 60 76 58 79
Card 2: 97 3 51 52 79 8 89 76 10 59 | 59 48 52 76 97 16 92 81 62 25 89 51 54 3 79 18 94 78 8 32 99 66 10 70 38
Card 3: 8 67 56 82 96 2 21 47 41 38 | 6 83 17 36 8 21 82 27 68 67 7 38 56 42 66 3 47 87 41 71 88 96 2 98 72
Card 4: 41 83 77 61 91 13 84 63 81 79 | 29 28 85 84 19 83 37 55 7 97 8 11 12 50 72 42 48 92 30 2 27 18 38 89 59
Card 5: 31 96 75 87 56 8 79 80 49 89 | 32 75 80 56 77 48 59 89 6 67 87 33 14 44 50 49 28 82 79 40 9 31 99 8 96
Card 6: 32 94 17 27 59 63 7 87 68 53 | 2 37 31 69 17 7 75 53 87 26 51 96 19 63 59 68 34 56 35 30 93 79 89 61 71
Card 7: 19 40 50 67 3 2 79 33 14 98 | 51 30 70 72 2 20 35 50 94 37 40 74 14 91 33 98 67 92 3 59 79 19 97 75 31
Card 8: 67 12 63 96 61 48 95 40 73 46 | 67 12 40 63 15 46 33 16 43 92 78 74 95 73 4 53 14 9 90 94 72 13 96 54 61
Card 9: 47 23 84 63 95 98 26 90 99 64 | 98 95 4 47 1 23 26 11 74 84 36 82 63 60 53 44 6 59 64 99 17 42 90 85 19
Card 10: 70 82 46 43 38 21 2 98 33 64 | 93 3 64 21 96 80 32 70 79 58 34 42 2 19 39 61 46 31 88 43 87 54 67 69 9
Card 11: 44 79 34 75 85 94 2 81 55 66 | 55 85 6 58 72 51 37 44 29 79 39 66 49 48 75 15 83 81 2 24 94 99 34 59 33
Card 12: 74 34 8 69 16 83 80 97 22 29 | 96 97 5 87 50 84 94 19 93 52 40 46 15 7 41 37 98 12 16 56 65 95 27 90 54
Card 13: 2 56 8 43 13 72 33 11 36 29 | 57 40 14 35 18 65 78 87 58 84 51 2 43 61 37 66 30 10 39 60 64 54 48 9 15
Card 14: 43 84 95 53 44 69 9 94 5 17 | 65 74 88 75 81 10 62 83 33 51 76 26 89 94 80 17 56 42 21 6 87 1 46 95 9
Card 15: 57 7 28 1 5 11 81 43 69 34 | 52 49 8 91 34 2 29 74 94 81 77 58 11 83 96 43 40 55 89 27 10 30 7 57 28
Card 16: 6 14 70 53 54 52 26 72 59 42 | 37 52 60 53 86 49 91 33 4 77 64 51 23 85 89 10 42 8 29 66 61 74 99 26 87
Card 17: 10 86 55 81 40 23 25 67 93 59 | 68 62 15 32 54 85 99 5 10 2 56 38 64 11 55 84 50 67 34 12 52 59 76 1 36
Card 18: 32 90 99 60 31 54 58 78 88 61 | 63 93 58 47 80 60 46 88 21 48 83 31 35 64 23 24 55 91 1 73 45 20 29 77 66
Card 19: 80 1 28 63 37 42 24 81 99 94 | 15 10 33 88 28 2 16 62 81 72 42 67 49 38 65 95 63 61 24 52 11 6 26 39 70
Card 20: 44 26 16 4 55 63 33 36 82 86 | 70 3 46 58 41 95 96 73 15 13 99 69 91 75 87 57 92 65 51 38 53 80 14 52 48
Card 21: 48 36 78 7 17 2 61 54 49 11 | 56 41 84 37 45 62 40 18 35 33 43 57 80 9 32 13 25 46 61 58 55 48 30 11 74
Card 22: 83 30 3 9 31 13 82 81 15 74 | 64 47 66 39 14 17 10 79 84 62 27 81 73 96 43 42 36 40 70 80 90 41 50 55 16
Card 23: 84 6 52 97 89 48 62 20 15 53 | 41 66 12 56 86 61 45 38 1 51 31 92 14 96 16 37 67 98 64 57 77 10 73 39 80
Card 24: 90 8 46 94 95 43 31 74 80 66 | 49 91 47 1 37 48 72 45 29 26 76 58 44 97 20 70 55 77 13 86 19 87 59 4 34
Card 25: 80 52 16 86 65 84 31 36 49 59 | 95 72 65 80 52 97 59 9 81 2 96 36 86 31 16 8 48 6 50 66 84 49 78 18 56
Card 26: 32 56 87 82 62 97 42 22 61 83 | 85 29 58 59 48 20 69 50 98 46 60 25 40 52 73 28 66 63 1 6 74 12 88 37 64
Card 27: 46 65 51 32 83 91 67 52 43 71 | 98 83 43 46 36 71 38 14 30 26 5 47 3 85 61 51 4 91 35 28 67 48 60 52 74
Card 28: 26 60 29 89 24 28 95 92 78 97 | 39 95 41 34 16 25 62 60 53 97 24 92 77 78 29 68 35 86 71 58 89 12 28 9 11
Card 29: 66 6 93 49 51 2 48 96 62 89 | 2 17 62 39 6 51 93 18 95 54 72 1 97 66 84 96 60 89 90 69 13 48 49 36 16
Card 30: 53 95 92 75 76 56 48 87 79 15 | 1 4 97 3 6 79 11 76 88 7 56 75 48 95 60 94 59 36 46 86 70 69 91 2 73
Card 31: 80 63 37 67 35 98 97 72 87 52 | 67 77 58 66 54 19 87 75 76 51 29 80 53 26 24 49 88 91 52 72 86 81 4 39 37
Card 32: 67 23 77 16 4 31 24 13 76 86 | 16 6 69 31 51 4 28 83 1 89 79 24 46 38 99 77 43 50 19 87 90 73 85 56 70
Card 33: 38 41 64 25 96 99 68 58 92 40 | 84 59 5 94 49 6 2 40 73 96 38 23 43 91 47 88 24 17 9 25 35 52 13 92 64
Card 34: 24 52 69 59 55 8 43 15 45 92 | 56 47 84 62 4 81 88 92 54 96 52 89 42 46 49 33 69 10 51 12 5 82 85 65 20
Card 35: 19 82 84 29 58 44 65 87 26 32 | 95 63 13 56 77 3 57 17 32 20 81 2 82 76 48 39 71 93 84 8 15 88 89 74 11
Card 36: 41 13 70 23 65 66 47 75 24 98 | 17 94 89 42 47 9 55 54 48 57 71 69 63 33 35 97 90 20 43 24 18 6 76 82 29
Card 37: 23 39 77 90 56 47 2 82 66 72 | 2 61 16 48 65 62 77 5 49 35 72 93 22 83 18 3 38 1 14 31 99 54 52 8 13
Card 38: 99 18 59 51 94 52 44 71 30 7 | 95 31 1 58 94 8 28 18 50 81 59 26 57 82 67 30 17 86 87 79 37 23 10 83 3
Card 39: 98 3 38 42 18 71 66 80 39 79 | 51 88 43 25 90 27 9 35 29 4 21 10 79 13 54 42 11 61 36 30 24 15 6 65 26
Card 40: 6 27 58 3 67 72 45 12 63 61 | 36 39 75 2 78 95 64 22 41 93 54 91 50 11 55 74 17 56 92 88 87 89 85 6 40
Card 41: 37 76 61 43 25 29 89 11 35 93 | 27 30 81 38 62 4 33 92 71 77 6 22 75 76 97 67 70 13 65 96 15 17 36 56 78
Card 42: 42 7 79 61 98 92 2 95 14 44 | 62 88 67 48 82 59 27 34 6 39 25 97 87 81 37 50 65 10 41 56 12 32 68 30 38
Card 43: 12 9 34 93 71 99 95 86 87 40 | 6 24 93 79 85 25 90 72 71 13 66 86 9 8 12 50 57 30 39 59 29 34 26 17 51
Card 44: 24 96 61 97 83 98 10 1 29 81 | 74 43 92 5 1 56 15 60 83 96 50 72 81 98 29 52 49 24 97 90 95 10 84 12 61
Card 45: 12 29 82 5 83 92 86 51 98 32 | 61 14 28 80 48 55 17 5 19 12 62 27 51 18 86 91 49 58 11 65 13 79 68 98 36
Card 46: 67 47 77 25 15 64 90 76 16 88 | 64 86 26 25 77 78 56 84 87 76 15 88 36 90 93 96 8 13 67 47 10 16 42 27 6
Card 47: 97 25 76 83 35 90 53 16 34 18 | 5 26 77 53 36 90 43 61 94 89 41 99 93 92 56 2 10 29 1 47 55 38 66 13 15
Card 48: 3 75 52 55 41 86 9 54 26 98 | 93 30 12 72 36 62 79 25 61 90 31 87 59 88 27 56 99 6 5 11 58 80 78 77 43
Card 49: 34 44 25 93 74 5 15 37 14 30 | 8 15 89 36 38 60 9 48 93 74 96 20 44 67 30 97 5 70 86 80 31 25 14 51 66
Card 50: 93 78 49 98 76 74 58 7 60 46 | 44 15 1 78 67 28 13 36 46 64 49 98 56 12 97 60 18 55 91 32 89 94 99 66 76
Card 51: 36 78 35 85 27 17 18 42 75 92 | 63 5 62 52 65 71 28 3 15 97 22 99 23 44 16 10 88 4 67 34 80 38 27 83 69
Card 52: 70 74 14 71 11 83 86 18 99 77 | 26 49 98 94 35 67 31 66 46 36 73 87 10 43 92 7 25 81 62 82 55 39 64 78 4
Card 53: 14 83 11 94 46 63 42 29 34 56 | 25 71 3 39 2 64 70 5 68 90 32 75 36 14 74 79 10 58 16 60 83 19 54 35 52
Card 54: 35 77 49 19 41 94 36 83 73 75 | 62 17 8 13 20 98 21 31 88 6 14 30 42 53 59 61 57 22 54 27 74 66 50 58 7
Card 55: 25 6 23 81 19 51 17 58 29 72 | 12 67 61 97 85 76 2 66 27 1 41 73 78 90 22 10 82 79 39 60 42 72 96 17 24
Card 56: 23 13 16 27 17 15 9 66 89 93 | 48 67 53 22 96 33 5 25 94 24 43 68 49 77 63 42 73 97 86 83 56 62 36 31 76
Card 57: 36 67 99 41 58 76 8 72 70 35 | 62 47 69 27 9 48 34 83 50 7 98 78 94 93 15 52 25 84 4 80 24 10 40 91 11
Card 58: 14 6 7 21 88 32 54 42 56 33 | 55 62 54 7 14 21 88 25 11 80 58 5 93 12 23 86 6 42 33 96 67 61 49 56 32
Card 59: 61 60 16 27 13 15 17 49 3 19 | 49 94 17 19 15 1 18 37 4 77 55 12 8 13 9 89 64 60 69 22 16 43 27 3 61
Card 60: 14 95 23 48 96 36 16 77 13 17 | 24 77 53 16 11 36 52 13 26 23 85 50 14 83 96 71 41 48 45 81 95 44 31 17 21
Card 61: 72 13 69 70 52 8 16 76 3 65 | 27 96 13 37 49 79 70 57 23 86 9 18 65 21 1 72 85 22 16 68 31 24 81 73 55
Card 62: 28 94 10 97 71 42 89 53 27 75 | 28 97 12 89 2 54 21 42 48 43 91 82 63 10 71 90 38 3 75 27 46 53 94 66 77
Card 63: 1 36 27 90 97 33 87 9 89 44 | 12 30 97 7 33 5 39 47 14 16 28 83 74 3 38 80 99 20 69 27 85 72 31 18 2
Card 64: 59 52 91 93 90 38 36 9 98 3 | 98 90 52 92 78 36 87 75 9 76 59 39 53 63 86 29 5 64 3 32 93 80 65 38 91
Card 65: 78 61 30 58 32 23 1 28 37 39 | 5 35 32 37 1 20 21 70 30 61 93 34 76 40 58 89 27 26 36 28 39 71 78 56 23
Card 66: 88 68 34 6 60 23 14 94 91 33 | 11 31 50 58 14 33 80 82 99 79 87 40 75 93 88 24 23 6 94 91 63 34 39 38 16
Card 67: 93 88 20 45 69 97 54 80 43 79 | 2 34 18 85 60 63 30 28 90 77 80 65 41 37 69 94 1 71 59 38 40 50 73 96 64
Card 68: 20 7 49 18 56 86 8 43 35 42 | 95 86 35 93 94 6 18 84 42 3 20 14 5 54 17 41 88 82 71 24 87 27 43 16 53
Card 69: 69 46 23 15 97 36 34 24 4 31 | 34 43 6 36 46 4 69 17 97 79 96 67 54 64 23 89 45 76 60 15 2 31 94 24 70
Card 70: 88 55 97 13 26 68 28 25 92 39 | 55 54 80 5 40 39 84 13 60 14 70 90 92 27 26 31 62 91 23 59 28 97 68 88 25
Card 71: 76 78 20 57 1 26 42 50 92 65 | 5 88 16 65 92 17 97 42 74 50 71 76 46 57 26 47 25 9 90 77 78 56 98 20 1
Card 72: 1 49 13 29 14 84 38 73 2 80 | 28 13 92 86 65 89 87 50 98 25 10 30 52 33 40 44 75 21 88 57 5 8 34 70 91
Card 73: 60 30 20 5 76 59 58 77 44 24 | 43 18 77 24 44 76 41 51 53 4 59 5 84 46 45 35 82 1 78 65 58 95 86 30 73
Card 74: 32 92 95 62 46 1 12 53 31 6 | 59 35 65 91 39 40 72 61 45 60 98 51 6 66 43 81 89 47 75 19 85 16 69 96 25
Card 75: 9 2 82 57 36 17 91 11 54 5 | 7 97 11 27 2 36 98 88 45 44 80 34 17 39 31 57 77 73 47 68 62 78 61 91 67
Card 76: 79 36 67 27 35 90 14 1 43 31 | 26 96 48 32 28 11 87 45 81 71 58 5 86 57 34 78 91 12 51 56 40 84 9 64 39
Card 77: 82 36 42 46 40 13 76 51 49 34 | 84 88 68 76 11 56 66 17 96 7 72 31 65 13 97 90 9 39 23 93 28 46 78 44 34
Card 78: 91 20 12 28 84 50 14 94 93 86 | 97 72 58 82 87 67 12 71 50 61 9 35 29 55 39 92 54 7 24 18 41 38 22 49 51
Card 79: 31 6 69 83 94 47 34 33 23 21 | 11 10 61 35 59 90 7 12 54 45 92 52 19 4 64 24 50 71 73 30 65 36 39 79 15
Card 80: 70 39 43 66 31 90 27 88 78 97 | 5 76 31 21 80 11 71 53 15 79 55 93 3 64 14 1 96 41 8 4 44 73 91 77 45
Card 81: 46 69 21 40 35 16 74 50 17 86 | 45 96 48 15 11 20 73 1 59 38 98 55 4 39 24 44 85 13 63 94 92 68 37 10 78
Card 82: 20 42 3 4 71 63 38 83 51 41 | 66 70 34 61 89 96 91 15 62 87 43 23 28 55 67 82 1 53 35 60 16 29 56 95 54
Card 83: 78 1 65 82 90 45 55 67 37 15 | 50 40 46 79 1 80 86 94 85 53 84 13 90 17 16 32 21 19 7 58 44 77 57 81 74
Card 84: 59 82 8 99 1 24 16 48 51 6 | 8 3 22 35 36 58 97 55 73 95 51 48 70 57 84 69 40 66 13 78 5 63 94 49 18
Card 85: 76 83 7 37 28 79 44 39 92 18 | 65 97 61 68 92 40 80 95 29 91 81 6 62 73 44 21 4 17 28 48 36 37 19 25 42
Card 86: 72 77 6 23 42 93 19 87 45 56 | 78 21 18 86 73 2 22 9 98 65 87 89 40 7 69 71 79 37 67 20 74 10 34 15 28
Card 87: 92 72 98 30 24 74 86 52 69 87 | 94 15 60 6 3 5 4 69 33 74 49 51 72 41 76 10 52 67 86 35 34 22 98 92 66
Card 88: 48 96 2 25 95 28 37 94 45 30 | 38 39 56 22 71 21 18 87 46 14 79 77 43 72 10 89 34 57 58 92 31 5 91 54 66
Card 89: 63 31 84 20 99 21 30 67 60 38 | 50 29 21 5 1 8 9 14 76 16 24 17 33 42 99 62 96 39 83 32 44 51 23 88 63
Card 90: 90 96 82 28 20 8 79 94 84 17 | 74 45 12 55 24 94 28 35 4 7 79 57 82 63 84 73 20 10 96 89 69 90 22 16 17
Card 91: 99 44 27 28 15 66 61 41 54 81 | 77 50 8 26 33 28 61 81 41 15 92 2 66 36 62 43 27 11 58 30 88 65 53 57 82
Card 92: 35 99 38 22 33 70 65 14 51 91 | 68 35 65 77 78 33 53 99 38 96 87 34 69 6 83 17 30 91 70 20 85 75 82 14 15
Card 93: 77 42 61 83 98 28 5 34 23 88 | 88 61 20 98 13 36 68 44 5 14 52 80 55 37 25 32 96 58 77 46 28 26 21 83 75
Card 94: 57 17 27 35 62 85 92 7 65 67 | 93 68 79 95 59 64 10 97 96 35 90 6 5 80 73 85 70 62 19 13 52 74 72 17 81
Card 95: 38 96 40 36 44 78 28 47 70 90 | 82 47 32 78 9 84 42 62 6 37 68 7 31 97 93 22 11 58 23 63 79 35 98 36 70
Card 96: 37 66 81 97 23 51 40 31 86 17 | 63 39 23 12 97 55 31 11 47 24 43 8 79 61 49 14 88 53 92 30 94 93 35 60 9
Card 97: 76 97 35 85 90 70 53 54 40 91 | 22 12 33 32 56 23 59 62 6 48 67 17 65 84 94 96 9 41 68 21 10 61 91 52 51
Card 98: 99 14 64 51 61 40 30 59 87 4 | 57 53 36 26 78 37 86 7 43 74 44 33 34 58 3 85 67 82 2 94 38 32 65 80 45
Card 99: 69 79 90 36 45 71 94 43 50 70 | 11 67 31 25 84 57 39 89 34 78 51 68 9 35 54 70 95 29 56 83 63 47 20 58 23
Card 100: 39 35 5 66 47 37 2 90 20 4 | 56 61 1 57 48 14 96 11 42 98 6 24 45 19 31 49 21 74 53 41 25 95 69 40 79
Card 101: 89 50 4 33 80 44 14 92 51 28 | 11 51 95 73 80 44 50 89 93 72 33 29 23 60 59 28 54 49 14 75 92 82 7 24 78
Card 102: 96 88 16 82 75 33 44 72 6 85 | 7 42 68 56 98 30 44 20 62 6 91 95 16 40 18 11 83 13 52 50 61 45 80 74 4
Card 103: 37 42 77 46 8 41 30 62 90 82 | 70 90 72 8 46 9 35 45 37 41 4 93 99 81 42 14 20 57 85 83 82 30 62 43 77
Card 104: 59 43 8 48 32 69 58 40 44 60 | 50 17 95 27 44 89 53 34 59 11 72 48 43 64 40 88 3 58 32 60 37 8 91 69 92
Card 105: 5 63 74 79 60 89 78 95 54 6 | 97 47 24 70 22 92 63 41 67 33 84 16 62 6 52 90 57 82 74 86 46 50 5 32 78
Card 106: 81 64 44 37 41 36 59 50 20 22 | 25 22 39 11 15 36 90 88 16 59 19 84 20 44 58 63 53 71 29 40 94 56 61 81 6
Card 107: 69 39 95 35 82 15 84 49 74 31 | 95 76 61 38 64 58 33 28 97 23 35 78 8 5 34 43 59 65 4 26 30 87 96 50 11
Card 108: 16 36 75 64 66 29 77 12 40 10 | 66 10 83 15 49 40 37 86 9 52 24 50 29 20 23 41 16 25 64 76 56 36 19 34 77
Card 109: 70 41 35 15 46 74 40 77 42 93 | 82 99 30 12 49 64 70 41 56 38 5 6 87 68 80 26 39 35 63 22 27 23 74 93 46
Card 110: 6 77 75 51 74 66 45 80 48 73 | 48 87 5 62 70 56 9 96 12 21 83 49 25 99 3 38 44 18 13 2 28 88 58 78 65
Card 111: 78 28 72 47 41 44 90 74 68 87 | 80 95 90 26 54 48 56 29 96 67 8 98 62 59 63 53 68 5 72 12 18 41 51 14 93
Card 112: 28 91 33 83 81 73 15 24 21 75 | 39 92 21 52 71 85 89 53 62 33 28 95 43 65 88 78 40 55 34 66 20 12 32 91 29
Card 113: 55 40 8 1 7 35 70 65 42 41 | 12 80 19 62 48 39 87 89 96 13 16 88 54 63 9 28 73 43 86 33 26 72 35 17 1
Card 114: 61 15 3 7 35 76 9 66 33 74 | 16 7 38 20 79 70 56 27 99 5 95 39 43 49 73 78 25 11 96 84 85 55 67 91 29
Card 115: 87 99 8 31 43 82 67 74 76 49 | 91 77 49 41 6 45 81 34 24 72 79 1 60 59 12 10 9 22 96 5 83 70 7 93 63
Card 116: 27 96 16 90 61 72 73 9 64 35 | 89 55 44 2 11 7 74 76 85 13 48 15 50 40 63 73 31 58 46 8 38 37 10 97 98
Card 117: 28 83 58 84 81 23 76 41 69 46 | 73 55 87 71 3 20 43 26 7 24 23 92 97 27 88 22 11 6 45 10 38 68 65 5 82
Card 118: 84 47 70 88 25 20 58 82 7 87 | 52 91 53 26 79 73 85 2 12 86 69 49 67 13 92 63 36 62 23 46 35 95 90 40 64
Card 119: 12 28 10 43 44 49 38 36 7 30 | 63 84 43 30 10 44 73 98 49 66 86 82 38 36 76 60 20 28 12 3 26 74 7 79 72
Card 120: 64 47 61 68 90 84 54 10 81 12 | 47 64 10 34 85 7 98 73 68 12 92 42 31 81 54 2 49 4 61 90 84 5 74 93 25
Card 121: 47 50 44 35 40 60 28 80 23 99 | 15 22 16 93 60 40 88 83 34 89 46 69 57 33 3 98 5 81 28 2 44 54 87 71 4
Card 122: 46 53 63 32 87 37 49 25 99 73 | 95 65 7 80 35 74 98 30 8 52 84 40 64 36 23 45 67 33 76 96 90 31 39 78 22
Card 123: 92 37 35 10 89 84 85 16 3 9 | 10 28 15 60 6 21 58 95 75 84 35 99 44 59 37 9 51 91 1 61 3 92 69 85 89
Card 124: 94 67 68 3 39 78 76 79 36 74 | 17 73 75 29 86 89 72 70 12 6 66 85 13 83 37 42 28 2 84 30 10 95 20 65 44
Card 125: 28 64 58 33 90 97 7 98 66 16 | 7 66 46 9 86 56 16 33 47 90 65 87 15 32 31 67 64 28 49 17 25 84 97 55 57
Card 126: 14 22 7 83 85 89 27 39 78 69 | 66 45 2 20 62 38 51 90 11 43 60 57 27 3 18 94 54 59 46 58 37 73 87 12 67
Card 127: 14 39 77 20 29 55 94 38 88 11 | 55 38 51 87 72 4 69 27 41 68 9 94 37 29 58 59 48 20 17 39 92 19 53 14 16
Card 128: 43 1 85 87 45 51 64 91 93 73 | 21 13 55 72 14 57 46 43 2 83 62 36 59 33 86 48 68 19 40 54 50 35 39 81 41
Card 129: 61 90 20 1 76 79 66 18 94 99 | 92 30 20 8 73 28 38 15 13 36 79 1 64 76 33 3 26 88 18 23 93 12 58 91 37
Card 130: 31 34 13 96 55 85 51 95 54 78 | 6 21 47 48 94 27 86 46 8 25 84 15 43 13 23 76 60 32 58 11 99 1 79 88 55
Card 131: 71 52 74 6 43 37 73 89 9 16 | 22 24 12 11 76 40 99 87 17 78 61 63 53 75 1 77 25 58 31 23 86 20 97 49 38
Card 132: 75 27 99 16 5 17 60 1 28 34 | 44 3 82 47 97 30 4 69 23 11 98 46 29 96 81 31 51 7 94 67 83 38 32 73 60
Card 133: 21 46 70 93 7 66 60 51 63 35 | 4 24 17 62 61 15 9 95 72 43 67 83 6 75 88 12 8 22 40 68 54 76 20 37 32
Card 134: 55 33 24 47 9 6 86 43 89 30 | 49 23 59 98 72 90 13 93 1 26 78 44 83 82 40 41 71 79 68 57 96 92 48 17 10
Card 135: 18 88 45 34 65 8 92 37 98 30 | 72 34 88 65 50 30 9 64 8 13 10 36 69 3 22 18 78 35 98 97 81 83 57 92 37
Card 136: 62 13 33 30 58 9 21 68 54 48 | 55 49 81 38 48 39 75 17 54 84 47 24 71 44 91 37 4 3 10 64 86 92 30 51 40
Card 137: 49 8 77 76 25 88 39 17 63 22 | 56 71 8 7 17 41 76 74 77 15 88 3 97 25 48 98 64 39 55 49 33 83 63 22 2
Card 138: 11 36 77 55 53 47 37 76 66 8 | 37 13 24 66 96 35 4 22 53 98 70 50 76 77 97 11 38 8 75 47 51 43 15 36 55
Card 139: 61 9 64 99 47 50 6 75 45 65 | 9 99 31 10 72 66 45 75 14 47 60 2 64 6 50 65 8 52 58 61 25 38 29 90 19
Card 140: 79 41 61 71 96 11 60 24 74 95 | 40 71 11 96 75 33 41 64 49 55 61 76 95 34 24 20 9 60 26 69 1 97 86 29 74
Card 141: 64 44 35 96 32 78 94 53 68 97 | 9 78 40 97 56 83 48 64 95 69 35 68 59 43 17 32 4 60 53 52 98 61 96 94 44
Card 142: 73 34 61 17 49 3 35 66 85 58 | 28 13 21 45 85 19 67 29 49 5 30 61 38 52 2 3 48 31 17 99 58 34 80 9 14
Card 143: 99 8 50 43 75 69 88 40 13 91 | 85 43 67 24 91 62 99 38 18 16 2 34 26 82 98 6 53 37 77 33 30 42 3 31 36
Card 144: 90 86 40 96 44 43 91 93 20 80 | 66 64 19 79 18 10 95 52 72 31 89 92 62 68 23 75 78 84 37 15 13 36 38 26 81
Card 145: 2 92 97 59 98 96 34 41 25 72 | 10 20 43 6 42 22 92 61 73 99 21 46 41 25 34 96 63 50 59 13 91 38 79 57 72
Card 146: 50 81 51 16 9 34 30 65 60 53 | 55 6 75 29 96 42 86 11 18 45 46 77 87 54 25 91 43 94 23 24 99 82 31 72 93
Card 147: 84 27 17 26 33 98 36 58 5 13 | 90 65 96 28 31 10 14 95 46 94 22 16 68 50 77 73 9 42 59 64 91 19 67 63 99
Card 148: 67 62 86 8 87 92 94 80 93 25 | 9 3 60 66 47 23 20 72 28 75 11 37 50 13 34 58 2 64 16 98 88 56 81 7 38
Card 149: 20 93 31 26 11 42 53 37 3 84 | 22 79 34 17 42 94 32 55 33 2 13 36 80 63 14 11 59 12 98 8 50 93 20 53 84
Card 150: 1 75 15 7 80 59 99 86 71 58 | 31 72 14 67 85 18 96 15 8 13 80 47 45 64 60 24 46 98 6 97 39 49 69 4 54
Card 151: 56 46 61 40 86 85 74 79 94 36 | 10 9 2 32 22 43 87 40 68 20 36 94 89 86 45 27 42 71 92 59 16 6 24 81 73
Card 152: 65 40 13 51 60 42 1 99 19 73 | 74 72 39 50 49 27 37 78 51 38 7 41 23 95 81 43 97 19 73 28 89 17 91 6 62
Card 153: 28 76 9 48 94 45 23 32 26 21 | 4 63 33 28 36 81 98 14 50 55 3 31 1 71 62 17 70 80 46 59 51 20 38 22 12
Card 154: 11 53 34 58 30 8 86 71 2 96 | 85 92 62 82 90 75 51 15 41 19 70 55 67 74 77 27 64 6 14 48 76 88 25 83 42
Card 155: 19 83 27 70 46 16 57 48 18 86 | 13 4 73 2 75 36 53 69 15 21 9 10 64 95 78 61 43 71 12 99 92 56 6 42 28
Card 156: 87 63 55 52 11 78 15 42 83 38 | 70 40 42 97 41 48 87 78 83 73 72 99 63 66 11 22 6 69 76 3 61 1 91 16 51
Card 157: 63 87 28 40 56 50 64 73 43 51 | 16 21 7 50 44 88 35 9 32 80 51 30 95 82 5 46 76 65 37 25 29 61 26 4 56
Card 158: 47 63 14 74 88 90 71 87 95 32 | 14 30 47 88 15 29 41 11 59 90 92 64 77 94 68 89 12 19 85 28 62 87 33 71 95
Card 159: 21 46 50 45 92 35 73 33 25 81 | 17 38 72 94 29 6 49 7 71 21 9 80 99 39 58 25 44 45 35 57 20 33 61 50 73
Card 160: 18 1 12 75 88 32 59 51 73 9 | 94 83 70 5 1 73 18 75 9 92 76 45 7 36 30 65 60 32 25 12 33 51 88 59 23
Card 161: 6 15 69 39 76 73 99 84 21 32 | 82 5 64 79 92 91 2 48 6 12 45 43 80 95 33 21 55 15 66 34 73 16 58 39 54
Card 162: 74 67 93 73 40 6 54 81 30 99 | 89 4 36 18 6 17 31 71 96 70 77 83 20 99 11 26 93 62 85 74 24 30 8 84 3
Card 163: 74 58 30 34 37 66 28 22 88 25 | 82 47 88 36 93 81 35 20 12 79 54 24 40 68 41 51 86 30 11 65 34 1 8 69 76
Card 164: 71 77 50 90 5 56 92 80 34 22 | 82 31 50 70 69 90 5 85 39 80 73 77 54 56 75 34 15 92 26 32 22 42 17 71 23
Card 165: 21 41 33 75 19 88 18 40 86 64 | 35 53 99 80 86 30 63 19 50 74 4 41 8 32 21 64 75 51 27 6 23 18 90 72 40
Card 166: 76 73 55 71 90 22 12 81 34 9 | 66 63 23 30 87 62 59 7 67 89 78 24 64 68 27 97 19 25 94 53 48 56 45 70 33
Card 167: 98 60 45 13 8 9 66 82 41 95 | 86 19 46 44 78 23 41 83 84 13 54 12 10 5 98 22 57 21 59 80 58 1 69 82 93
Card 168: 40 36 18 3 44 29 86 23 13 75 | 18 44 3 9 40 62 55 1 78 49 27 13 87 48 12 36 86 17 29 76 34 20 32 50 94
Card 169: 64 4 61 79 17 20 84 37 70 99 | 73 5 90 54 55 96 60 36 28 74 64 99 68 61 4 33 29 70 27 42 8 67 15 17 34
Card 170: 12 91 87 50 84 14 38 93 43 78 | 95 46 66 64 47 60 36 70 97 73 56 93 83 65 11 1 15 7 42 41 59 40 84 82 62
Card 171: 3 6 81 89 27 88 46 37 69 14 | 60 31 64 61 65 25 83 43 19 20 74 75 17 92 4 53 1 91 97 16 26 22 95 50 84
Card 172: 40 35 87 27 3 58 81 45 59 80 | 90 21 88 64 66 52 5 63 65 40 13 79 82 62 85 34 78 37 33 27 87 26 58 95 75
Card 173: 8 45 37 66 63 7 97 42 95 28 | 56 45 24 78 82 57 83 51 18 95 5 79 59 50 30 11 19 43 88 90 49 62 17 68 22
Card 174: 8 56 80 50 6 12 36 32 24 98 | 53 22 70 13 62 58 15 79 78 7 9 38 26 63 75 44 17 82 67 59 71 86 39 46 93
Card 175: 43 47 46 35 94 39 67 3 2 24 | 86 23 52 91 66 45 81 75 61 80 10 17 60 16 44 57 83 62 32 37 38 12 48 93 84
Card 176: 82 97 11 25 15 68 7 24 77 46 | 18 35 2 80 48 75 19 47 70 39 99 43 28 62 33 50 13 17 10 58 86 45 16 88 60
Card 177: 95 59 14 68 13 22 4 75 2 70 | 64 45 12 31 99 77 59 28 91 42 21 89 67 9 90 78 37 14 46 75 52 15 22 79 96
Card 178: 83 17 81 96 9 2 80 70 57 53 | 85 80 62 9 29 25 8 83 2 66 17 68 84 3 81 42 57 23 15 72 96 53 70 7 73
Card 179: 48 84 29 81 88 3 10 27 21 16 | 74 21 97 28 18 81 84 6 42 76 29 89 48 83 50 3 88 73 22 10 2 55 16 27 36
Card 180: 30 77 49 58 39 1 97 13 25 34 | 75 53 61 99 34 62 48 1 51 77 84 25 49 26 79 59 13 11 30 60 21 39 97 93 58
Card 181: 73 52 53 23 83 74 1 87 86 54 | 23 53 54 5 11 1 55 73 74 44 46 82 34 41 60 67 31 96 35 52 86 15 18 87 83
Card 182: 90 48 22 80 52 41 78 11 55 32 | 60 9 2 21 87 42 68 16 15 50 95 51 99 40 30 52 20 12 26 49 92 19 84 36 76
Card 183: 33 63 2 19 24 61 10 14 37 1 | 59 20 32 69 98 55 85 36 29 71 61 68 14 2 7 88 39 16 94 92 74 45 90 38 35
Card 184: 85 65 43 1 75 27 17 10 91 18 | 27 42 55 89 38 66 82 75 64 43 50 39 52 10 59 93 18 3 91 1 85 40 26 8 65
Card 185: 74 7 10 70 95 76 27 50 13 36 | 70 15 58 18 13 74 4 64 50 44 54 27 56 35 87 28 76 92 85 36 66 95 90 96 78
Card 186: 45 59 16 99 43 79 89 90 40 49 | 18 97 56 67 61 29 80 34 91 88 33 95 41 76 78 68 28 46 51 93 98 72 54 74 8
Card 187: 87 69 84 72 92 86 13 76 40 38 | 38 8 37 71 30 49 50 21 51 39 34 90 84 16 11 10 4 63 7 42 36 77 48 85 20
Card 188: 96 18 79 50 81 65 84 74 76 58 | 21 48 35 12 83 70 23 88 58 3 74 84 72 76 43 71 8 27 2 37 46 89 5 54 81
Card 189: 22 90 97 45 19 70 36 23 81 2 | 6 60 40 57 41 16 91 42 58 38 92 31 15 76 35 73 11 33 24 30 32 85 18 51 93
Card 190: 72 69 52 65 14 74 64 57 70 33 | 41 99 32 49 96 34 82 80 42 1 69 40 64 44 88 86 14 31 28 22 38 46 45 54 29
Card 191: 86 70 76 64 97 6 56 34 87 41 | 96 81 52 89 28 16 29 90 41 32 70 68 9 88 30 5 60 92 61 49 56 50 46 37 11
Card 192: 14 42 66 20 48 94 55 51 23 75 | 83 74 97 43 28 72 18 26 13 59 93 19 10 60 89 82 63 50 3 21 4 79 91 98 36
Card 193: 13 33 98 37 19 86 32 15 95 96 | 56 90 5 60 24 21 46 73 29 3 58 75 77 66 41 48 82 84 10 53 43 15 18 2 89
Card 194: 77 6 10 48 14 79 73 51 49 25 | 86 12 37 23 43 34 5 89 97 27 53 70 75 19 15 79 45 26 1 73 68 36 2 78 18
Card 195: 94 57 24 37 46 75 73 10 29 5 | 78 25 21 48 22 46 38 76 19 17 64 32 88 99 63 12 20 41 16 7 14 54 81 97 89
Card 196: 76 48 15 89 44 50 79 80 52 78 | 93 55 21 18 73 31 47 20 97 83 87 30 6 24 77 74 67 45 76 65 37 43 42 98 38
Card 197: 67 21 75 10 9 6 47 88 45 70 | 91 95 58 82 52 50 87 81 78 13 64 53 57 14 55 25 36 76 19 86 56 2 16 54 1

211
input/5.txt Normal file
View File

@ -0,0 +1,211 @@
seeds: 630335678 71155519 260178142 125005421 1548082684 519777283 4104586697 30692976 1018893962 410959790 3570781652 45062110 74139777 106006724 3262608046 213460151 3022784256 121993130 2138898608 36769984
seed-to-soil map:
2977255263 3423361099 161177662
3464809483 1524036300 40280620
1278969303 2583891002 282823382
3766263020 1796922321 171061976
411885923 23002578 152894367
564780290 442452799 75000259
2421385924 1454220354 69815946
3348169880 3014668733 58677303
903828313 1975611534 37514769
3406847183 1396258054 57962300
4043490501 3171884304 251476795
941343082 2866714384 147954349
1089297431 1206586182 189671872
2891116902 3584538761 18778869
0 517453058 122327491
2491201870 932395829 274190353
388883345 0 23002578
3944952233 3073346036 98538268
3505090103 671222912 261172917
2073455492 2013126303 347930432
2909895771 2361056735 67359492
1561792685 3603317630 511662807
2765392223 2458166323 125724679
3168183021 4114980437 179986859
3138432925 2428416227 29750096
122327491 175896945 266555854
671222912 1564316920 232605401
3937324996 1967984297 7627237
soil-to-fertilizer map:
895998030 0 382128379
2851625320 2664267363 205943350
2518444693 3961786669 333180627
1879667741 2025490411 638776952
0 1243838521 558555556
3280896340 2870210713 1014070956
558555556 906396047 337442474
3057568670 3884281669 77505000
3135073670 1879667741 145822670
1278126409 382128379 524267668
fertilizer-to-water map:
0 1845976330 336090970
3299138007 3322545218 12048535
336090970 0 11457152
1280501317 1371665084 474311246
2583893821 3334593753 715244186
3311186542 2468197905 738651397
2468197905 3206849302 115695916
347548122 11457152 932953195
1754812563 944410347 427254737
water-to-light map:
1121222108 519789808 4326619
1125548727 524116427 429792955
1052043895 3930896885 69178213
3210593080 0 36442681
1669405426 2787769857 138341045
1919839172 3142586910 277606697
2197445869 2466152271 321617586
1555341682 3816833141 114063744
3431283943 3092543143 50043767
3481327710 1975836414 28620233
136025352 1371812880 335069822
0 3420193607 136025352
2600375975 3610804829 206028312
3247035761 36442681 184248182
3676380184 1048117966 323694914
2519063455 966805446 81312520
483991238 1706882702 268953712
3509947943 2926110902 166432241
1862332341 2408645440 57506831
752944950 220690863 299098945
2806404287 2004456647 404188793
1807746471 3556218959 54585870
471095174 953909382 12896064
light-to-temperature map:
3941111261 382813357 83783792
4083751028 2792620142 62769876
2924924808 517646744 141124785
10073304 296361721 86451636
2112077648 3356571260 325360811
2097723771 930487406 14353877
1038821361 2233157447 330985253
1604981575 0 157737476
4232208439 2231398376 1759071
3126943010 2564142700 228477442
3355420452 3681932071 528033316
3066049593 1302213021 60893417
2893234140 1091417457 31690668
4146520904 1005729922 85687535
764412615 658771529 271715877
4024895053 4212658256 21309254
1601614929 3144601228 3366646
2813498518 3276835638 79735622
0 944841283 10073304
3883453768 1363106438 57657493
1036128492 4209965387 2692869
1762719051 1160654846 141558175
2437438459 157737476 138624245
96524940 1420763931 667887675
2576062704 3147967874 128867764
1904277226 2855390018 50699775
1420621949 2906089793 129943385
1550565334 466597149 51049595
2704930468 3036033178 108568050
4046204307 1123108125 37546721
1369806614 954914587 50815335
1954977001 2088651606 142746770
temperature-to-humidity map:
3744493855 2753433800 53429527
3926657179 2806863327 207882975
567844723 1829271702 6392959
3797923382 3046866321 128733797
1711260618 465872733 110275892
2947786208 2530091374 223342426
2371290430 3335177849 39675908
1900678095 703125986 238513863
1521940365 941639849 16040471
979702084 962957535 519048585
2678536664 3987414423 22824189
316276095 2006380474 251568628
574237682 576148625 7838036
2512589774 2369848229 129456424
1821536510 386731148 79141585
659847979 2257949102 32337475
1498750669 0 23189696
2139191958 1482006120 151094619
2410966338 2361085516 8762713
248695366 629624702 67580729
1705983403 957680320 5277215
3436386005 3680199681 275987831
896869843 23189696 23822140
1540019357 265437244 43521643
3171128634 4029709925 265257371
700698880 1633100739 196170963
2659065351 4010238612 19471313
1660345362 583986661 45638041
2642046198 3175600118 17019153
4134540154 3966392426 21021997
145503080 1903188188 103192286
4155562151 3467714480 139405145
920691983 1844178087 59010101
2805227630 3192619271 142558578
692185454 1835664661 8513426
2732147574 3607119625 73080056
3712373836 3014746302 32120019
2361085516 3956187512 10204914
2701360853 2499304653 30786721
582075718 308958887 77772261
1583541000 188632882 76804362
3882034 47011836 141621046
0 699243952 3882034
1537980836 697205431 2038521
2419729051 3374853757 92860723
humidity-to-location map:
3880387060 2052152805 97611299
2442736538 3295723734 10591308
3014234548 3058886861 44150293
2722522139 3413370195 153277538
2877652345 3226748198 68975536
678696757 79205913 5515453
3758528684 3103037154 121858376
3648288667 2533118408 110240017
3457871155 4266074310 28892986
2176930761 3905620500 135283057
2312213818 2369019482 56130623
2875799677 3224895530 1852668
2052152805 3780842544 124777956
2598433171 3306315042 56382802
1279041455 278559111 48074772
2964261570 2302916483 49972978
344154771 1539624544 79809331
1030322972 1619433875 248718483
1905012367 1868152358 115533200
105230362 326633883 51970437
4085966662 2880778716 178108145
684212210 1466450827 73173717
919250672 396737705 108684083
868993622 1215278638 50257050
2962757902 2879275048 1503668
1847630888 378604320 18133385
3232700402 4040903557 225170753
2575587736 3390524760 22845435
3977998359 2425150105 107968303
3058384841 3362697844 27826916
789787709 0 79205913
4264074807 2272023994 30892489
3114006964 3594442940 118693438
460824111 202771015 75788096
423964102 1983685558 36860009
2946627881 2352889461 16130021
157200799 505421788 186953972
3486764141 2717750522 161524526
1027934755 692375760 2388217
2453327846 2149764104 122259890
2368344441 2643358425 74392097
0 1407620238 58830589
2654815973 3713136378 67706166
1865764273 117123148 39248094
3086211757 3566647733 27795207
58830589 156371242 46399773
536612207 1265535688 142084550
757385927 84721366 32401782
1327116227 694763977 520514661

16
src/common.rs Normal file
View File

@ -0,0 +1,16 @@
use std::{fs::File, io::{BufReader, BufRead}};
pub fn load_input(filepath: &str) -> Result<Vec<String>, Box<dyn std::error::Error>> {
let file = File::open(filepath)?;
let reader = BufReader::new(file);
let mut result: Vec<String> = vec![];
for line in reader.lines() {
result.push(line?);
}
Ok(result)
}

17
src/five.rs Normal file
View File

@ -0,0 +1,17 @@
use crate::common::load_input;
struct TranslationRange{
source_start: u32,
destination_start: u32,
range: u32,
}
struct TranslationMap {
ranges: Vec<TranslationRange>
}
pub fn run() -> Result<i32, Box<dyn std::error::Error>> {
let lines = load_input("./input/5.txt")?;
Ok(999)
}

96
src/four.rs Normal file
View File

@ -0,0 +1,96 @@
use std::collections::HashMap;
use regex::Regex;
use crate::common::load_input;
struct Game {
id: i32,
played: Vec<i32>,
winning: Vec<i32>,
}
fn nums_in_string(s: &str) -> Vec<i32>{
let rx = Regex::new(r"(\d+)").unwrap();
let result = rx.captures_iter(s);
result.map(|e| e.get(0).unwrap().as_str().parse().unwrap()).collect()
}
fn parse_input(lines: &Vec<String>) -> Vec<Game> {
return lines.iter().map(|line| {
let (game_part, num_part) = line.split_once(":").unwrap();
let game_id:i32 = game_part.split_at(5).1.trim().parse().unwrap();
let (played_str, winning_str) = num_part.split_once("|").unwrap();
return Game{
id: game_id,
played: nums_in_string(played_str),
winning: nums_in_string(winning_str)
};
}).collect();
}
fn games_won(game: &Game)-> i32 {
return game.played.iter().filter(|e| game.winning.contains(e)).count().try_into().unwrap();
}
fn p2_cards(game: &Game) -> Vec<usize> {
let mut rtn: Vec<usize> = Vec::new();
for i in 0..games_won(game){
rtn.push((game.id + i+1) as usize);
}
return rtn;
}
fn p2_num_cards(games: &Vec<Game>, game: &Game, cache: &mut HashMap<usize,i32>) -> i32 {
return match cache.get(&(game.id as usize)) {
Some(value) => {*value} // Cache hit
None =>{
let cards = p2_cards(game);
let mut sum = 1i32;
for card in cards.iter() {
match games.get(*card){
Some(value) => {
sum += p2_num_cards(games, value,cache);
},
None => {}
}
}
cache.insert(game.id as usize, sum);
sum
}
}
}
pub fn run_part2() -> Result<i32, Box<dyn std::error::Error>> {
let lines = load_input("./input/4.txt")?;
let games = parse_input(&lines);
let mut lookup_table: HashMap<usize,i32> = HashMap::new();
let mut sum = 0i32;
for game in games.iter() {
sum += p2_num_cards(&games, game, &mut lookup_table)
}
Ok(sum)
}
pub fn run() -> Result<i32, Box<dyn std::error::Error>> {
let lines = load_input("./input/4.txt")?;
let games = parse_input(&lines);
let points = games.iter()
.map(games_won)
.filter(|e| *e > 0i32)
.map(|e| 2i32.pow(e as u32 -1 ))
.sum();
Ok(points)
}

31
src/main.rs Normal file
View File

@ -0,0 +1,31 @@
use std::env;
mod common;
mod one;
mod two;
mod three;
mod four;
mod five;
fn main() {
let args: Vec<String> = env::args().collect();
let day = args.get(1).unwrap();
let result = match day.as_str() {
"1" => one::run(),
"1p2" => one::run_part2(),
"2" => two::run(),
"2p2" => two::run_part2(),
"3" => three::run(),
"4" => four::run(),
"4p2" => four::run_part2(),
"5" => five::run(),
_ => Ok(-1),
};
match result {
Ok(val) => println!("Result: {}",val),
Err(err) => println!("Err: {}",err)
}
}

114
src/one.rs Normal file
View File

@ -0,0 +1,114 @@
use std::str::FromStr;
use regex::Regex;
use crate::common::load_input;
extern crate regex;
fn num(line: String) -> i32 {
let mut digits: String = String::from_str("").unwrap();
for (_, c) in line.chars().enumerate() {
if c >= '0' && c <= '9' {
digits.push(c);
}
}
return get_num_from_digits(digits);
}
fn num_part2(line: String) -> i32 {
let mut last_digit: &str = "";
let mut last_digit_index: usize = 0;
let mut first_digit: &str = "";
let mut first_digit_index: usize = usize::MAX;
for pattern in [r"(one)",r"(two)",r"(three)",r"(four)",r"(five)",r"(six)",r"(seven)",r"(eight)",r"(nine)",r"(\d)"]{
let regex = Regex::new(pattern).unwrap();
let result = regex.captures_iter(&line);
for mat in result {
let match_str = mat.get(0).unwrap().as_str();
let match_index = mat.get(0).unwrap().start();
// Check first digit
if match_index <= first_digit_index {
first_digit_index = match_index;
first_digit = match_str;
}
if match_index >= last_digit_index {
last_digit_index = match_index;
last_digit = match_str;
}
}
}
let mut picked_digits: String = String::from_str("").unwrap();
if first_digit.len() > 1 {
picked_digits.push_str(num_lookup(first_digit));
}else{
picked_digits.push_str(first_digit);
}
if last_digit.len() > 1 {
picked_digits.push_str(num_lookup(last_digit));
}else{
picked_digits.push_str(last_digit);
}
return picked_digits.parse().unwrap();
}
/// Converts a written number into its digit
/// Panics if failed
fn num_lookup(str: &str) -> &str{
match str {
"one" => "1",
"two" => "2",
"three" => "3",
"four" => "4",
"five" => "5",
"six" => "6",
"seven" => "7",
"eight" => "8",
"nine" => "9",
_ => panic!("Nan")
}
}
fn get_num_from_digits(digits: String)-> i32{
let mut picked_digits: String = String::from_str("").unwrap();
picked_digits.push(digits.chars().nth(0).unwrap());
picked_digits.push(digits.chars().last().unwrap());
return picked_digits.parse().unwrap();
}
pub fn run_part2() -> Result<i32, Box<dyn std::error::Error>> {
let lines = load_input("./input/1.txt")?;
let mut sum = 0i32;
for line in lines {
sum += num_part2(line);
}
Ok(sum)
}
pub fn run() -> Result<i32, Box<dyn std::error::Error>> {
let lines = load_input("./input/1.txt")?;
let mut sum = 0i32;
for line in lines {
sum += num(line);
}
Ok(sum)
}

63
src/three.rs Normal file
View File

@ -0,0 +1,63 @@
use regex::Regex;
use crate::common::load_input;
fn has_adjacent_symbol(lines: &Vec<String>,pos: (usize,usize)) -> bool {
let check = move |x: i32,y:i32| {
is_symbol(get_char(lines, ((x + pos.0 as i32) as usize,(y + pos.1 as i32) as usize)))
};
if check(-1,0){return true}
if check(1,0){return true}
if check(0,-1){return true}
if check(0,1){return true}
if check(1,-1){return true}
if check(-1,-1){return true}
if check(1,1){return true}
if check(-1,1) {return true}
return false;
}
fn get_char(lines: &Vec<String>,pos: (usize,usize)) -> char{
lines.get(pos.1).unwrap_or(&String::from("")).chars().nth(pos.0).unwrap_or('.')
}
fn is_symbol(c: char) -> bool{
if c >= '0' && c <= '9' {return false;}
if c == '.' {return false;}
return true;
}
fn check_nums(lines: &Vec<String>)-> i32 {
let re = Regex::new(r"(\d+)").unwrap();
let mut sum = 0i32;
for (y,line) in lines.iter().enumerate(){
let caps = re.captures_iter(line);
for mat in caps {
let x_start = mat.get(0).unwrap().start();
let x_end = mat.get(0).unwrap().end();
for n in x_start..x_end{
if has_adjacent_symbol(lines, (n,y)){
let match_str = mat.get(0).unwrap().as_str();
let num: i32 = match_str.parse().unwrap();
println!("{}",num);
sum += num;
break;
}
}
}
}
return sum;
}
pub fn run() -> Result<i32, Box<dyn std::error::Error>>{
let lines = load_input("./input/3.txt")?;
Ok(check_nums(&lines))
}

112
src/two.rs Normal file
View File

@ -0,0 +1,112 @@
use crate::common::load_input;
struct Game {
id: i32,
sets: Vec<Set>,
}
/// Red, Green, Blue
struct Set {
red: i32,
green: i32,
blue: i32,
}
fn parse_line(line: &str) -> Game {
let (game_part, sets_part) = line.split_once(":").unwrap();
let sets = sets_part.split(";");
let game = Game {
id: game_part.split_at(5).1.parse().unwrap(),
sets: sets
.map(|set| {
let mut rtn = Set {
red: 0,
green: 0,
blue: 0,
};
set.split(",").for_each(|color| {
if color.contains("red") {
rtn.red = color.split_at(color.len() - 4).0.trim().parse().unwrap();
return;
}
if color.contains("green") {
rtn.green = color.split_at(color.len() - 6).0.trim().parse().unwrap();
return;
}
if color.contains("blue") {
rtn.blue = color.split_at(color.len() - 5).0.trim().parse().unwrap();
return;
}
});
return rtn;
})
.collect(),
};
return game;
}
/// Returns a set with the maximum value for each color
fn max_set(sets: &Vec<Set>) -> Set {
return Set {
red: sets
.iter()
.max_by_key(|e| e.red)
.unwrap_or(&Set {
red: 0,
green: 0,
blue: 0,
})
.red,
green: sets
.iter()
.max_by_key(|e| e.green)
.unwrap_or(&Set {
red: 0,
green: 0,
blue: 0,
})
.green,
blue: sets
.iter()
.max_by_key(|e| e.blue)
.unwrap_or(&Set {
red: 0,
green: 0,
blue: 0,
})
.blue,
};
}
pub fn run_part2() -> Result<i32, Box<dyn std::error::Error>> {
let lines = load_input("./input/2.txt")?;
let max = lines
.iter()
.map(|e| parse_line(e))
.map(|game|{
let max = max_set(&game.sets);
return max.blue * max.green * max.red;
}).sum();
Ok(max)
}
pub fn run() -> Result<i32, Box<dyn std::error::Error>> {
let lines = load_input("./input/2.txt")?;
let sum_ids = lines
.iter()
.map(|e| parse_line(e))
.filter(|game| {
let max = max_set(&game.sets);
return max.red <= 12 && max.green <= 13 && max.blue <= 14;
})
.map(|game| game.id)
.sum();
Ok(sum_ids)
}