From 29a688188847068f68b99ba942984561161212e4 Mon Sep 17 00:00:00 2001 From: James Lawlor Date: Sat, 7 Dec 2024 09:02:21 +0200 Subject: [PATCH 01/10] refactor 2023 code --- Makefile | 22 ++++++------- inputs/2023/{1.txt => 01.txt} | 0 inputs/2023/{2.txt => 02.txt} | 0 inputs/2023/{3.txt => 03.txt} | 0 inputs/2023/{4.txt => 04.txt} | 0 inputs/2023/{6.txt => 06.txt} | 0 requirements.txt | 3 +- run_day.py | 14 +++++++++ ...e_new_day_skeleton_files_from_templates.py | 0 .../templates/days_template.txt | 0 .../templates/solvers_template.txt | 0 .../templates/tests_template.txt | 0 .../{year_2023 => 2023}/__init__.py | 0 .../day_1_solvers.py => 2023/day_01.py} | 25 +++++++++++++++ .../day_2_solvers.py => 2023/day_02.py} | 16 ++++++++++ .../day_3_solvers.py => 2023/day_03.py} | 17 ++++++++++ .../day_4_solvers.py => 2023/day_04.py} | 17 ++++++++++ .../day_6_solvers.py => 2023/day_06.py} | 17 ++++++++++ src/advent_of_code/year_2023/days/1.py | 31 ------------------- src/advent_of_code/year_2023/days/2.py | 16 ---------- src/advent_of_code/year_2023/days/3.py | 18 ----------- src/advent_of_code/year_2023/days/4.py | 19 ------------ src/advent_of_code/year_2023/days/6.py | 19 ------------ src/advent_of_code/year_2023/days/__init__.py | 0 .../year_2023/solvers/__init__.py | 0 .../test_day_1_solvers.py => 2023/day_01.py} | 2 +- .../test_day_2_solvers.py => 2023/day_02.py} | 2 +- .../test_day_3_solvers.py => 2023/day_03.py} | 2 +- .../test_day_4_solvers.py => 2023/day_04.py} | 2 +- .../test_day_6_solvers.py => 2023/day_06.py} | 2 +- 30 files changed, 121 insertions(+), 123 deletions(-) rename inputs/2023/{1.txt => 01.txt} (100%) rename inputs/2023/{2.txt => 02.txt} (100%) rename inputs/2023/{3.txt => 03.txt} (100%) rename inputs/2023/{4.txt => 04.txt} (100%) rename inputs/2023/{6.txt => 06.txt} (100%) create mode 100644 run_day.py rename {src/advent_of_code/scripts => scripts}/generate_new_day_skeleton_files_from_templates.py (100%) rename {src/advent_of_code/scripts => scripts}/templates/days_template.txt (100%) rename {src/advent_of_code/scripts => scripts}/templates/solvers_template.txt (100%) rename {src/advent_of_code/scripts => scripts}/templates/tests_template.txt (100%) rename src/advent_of_code/{year_2023 => 2023}/__init__.py (100%) rename src/advent_of_code/{year_2023/solvers/day_1_solvers.py => 2023/day_01.py} (82%) rename src/advent_of_code/{year_2023/solvers/day_2_solvers.py => 2023/day_02.py} (83%) rename src/advent_of_code/{year_2023/solvers/day_3_solvers.py => 2023/day_03.py} (94%) rename src/advent_of_code/{year_2023/solvers/day_4_solvers.py => 2023/day_04.py} (85%) rename src/advent_of_code/{year_2023/solvers/day_6_solvers.py => 2023/day_06.py} (81%) delete mode 100644 src/advent_of_code/year_2023/days/1.py delete mode 100644 src/advent_of_code/year_2023/days/2.py delete mode 100644 src/advent_of_code/year_2023/days/3.py delete mode 100644 src/advent_of_code/year_2023/days/4.py delete mode 100644 src/advent_of_code/year_2023/days/6.py delete mode 100644 src/advent_of_code/year_2023/days/__init__.py delete mode 100644 src/advent_of_code/year_2023/solvers/__init__.py rename tests/{year_2023/test_day_1_solvers.py => 2023/day_01.py} (98%) rename tests/{year_2023/test_day_2_solvers.py => 2023/day_02.py} (96%) rename tests/{year_2023/test_day_3_solvers.py => 2023/day_03.py} (98%) rename tests/{year_2023/test_day_4_solvers.py => 2023/day_04.py} (96%) rename tests/{year_2023/test_day_6_solvers.py => 2023/day_06.py} (97%) diff --git a/Makefile b/Makefile index 4f7fed4..a426d96 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: all clean black flake test solutions # Default target -all: black flake test solutions clean +all: ruff test solutions clean # Clean temporary and generated files clean: @@ -9,12 +9,8 @@ clean: find . \( -type d -name '.eggs' -or -type d -name '*.egg-info' -or -type d -name '.pytest_cache' \) | xargs rm -rf # Format code using black -black: - black ./src ./tests - -# Run flake8 for linting -flake: - flake8 ./src ./tests +ruff: + ruff check . # Run tests test: @@ -22,12 +18,12 @@ test: # Run specific solutions for Advent of Code 2023 solutions: - python3 src/advent_of_code/year_2023/days/1.py --input_file inputs/2023/1.txt --part 1 - python3 src/advent_of_code/year_2023/days/1.py --input_file inputs/2023/1.txt --part 2 - python3 src/advent_of_code/year_2023/days/2.py --input_file inputs/2023/2.txt - python3 src/advent_of_code/year_2023/days/3.py --input_file inputs/2023/3.txt - python3 src/advent_of_code/year_2023/days/4.py --input_file inputs/2023/4.txt - python3 src/advent_of_code/year_2023/days/6.py --input_file inputs/2023/6.txt + python3 src/advent_of_code/year_2023/days/1.py --input_file inputs/2023/01.txt --part 1 + python3 src/advent_of_code/year_2023/days/1.py --input_file inputs/2023/01.txt --part 2 + python3 src/advent_of_code/year_2023/days/2.py --input_file inputs/2023/02.txt + python3 src/advent_of_code/year_2023/days/3.py --input_file inputs/2023/03.txt + python3 src/advent_of_code/year_2023/days/4.py --input_file inputs/2023/04.txt + python3 src/advent_of_code/year_2023/days/6.py --input_file inputs/2023/06.txt .PHONY: new-day-skeleton-files-from-template new-day-skeleton-files-from-template: diff --git a/inputs/2023/1.txt b/inputs/2023/01.txt similarity index 100% rename from inputs/2023/1.txt rename to inputs/2023/01.txt diff --git a/inputs/2023/2.txt b/inputs/2023/02.txt similarity index 100% rename from inputs/2023/2.txt rename to inputs/2023/02.txt diff --git a/inputs/2023/3.txt b/inputs/2023/03.txt similarity index 100% rename from inputs/2023/3.txt rename to inputs/2023/03.txt diff --git a/inputs/2023/4.txt b/inputs/2023/04.txt similarity index 100% rename from inputs/2023/4.txt rename to inputs/2023/04.txt diff --git a/inputs/2023/6.txt b/inputs/2023/06.txt similarity index 100% rename from inputs/2023/6.txt rename to inputs/2023/06.txt diff --git a/requirements.txt b/requirements.txt index 40ed6fb..7f0065e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ -black==23.12.1 -flake8==6.1.0 +ruff==0.1.9 numpy==1.26.2 pytest==7.4.3 setuptools==68.2.2 diff --git a/run_day.py b/run_day.py new file mode 100644 index 0000000..4472912 --- /dev/null +++ b/run_day.py @@ -0,0 +1,14 @@ +import importlib +import sys + +# if len(sys.argv) < 2: +# print("Usage: python run_day.py ") +# sys.exit(1) + +day = sys.argv[1] + +try: + module = importlib.import_module(f"advent_of_code.year_2023.days.{day}") + module.main() # Assumes each day's file has a `main` function +except ModuleNotFoundError: + print(f"Day {day} not found.") diff --git a/src/advent_of_code/scripts/generate_new_day_skeleton_files_from_templates.py b/scripts/generate_new_day_skeleton_files_from_templates.py similarity index 100% rename from src/advent_of_code/scripts/generate_new_day_skeleton_files_from_templates.py rename to scripts/generate_new_day_skeleton_files_from_templates.py diff --git a/src/advent_of_code/scripts/templates/days_template.txt b/scripts/templates/days_template.txt similarity index 100% rename from src/advent_of_code/scripts/templates/days_template.txt rename to scripts/templates/days_template.txt diff --git a/src/advent_of_code/scripts/templates/solvers_template.txt b/scripts/templates/solvers_template.txt similarity index 100% rename from src/advent_of_code/scripts/templates/solvers_template.txt rename to scripts/templates/solvers_template.txt diff --git a/src/advent_of_code/scripts/templates/tests_template.txt b/scripts/templates/tests_template.txt similarity index 100% rename from src/advent_of_code/scripts/templates/tests_template.txt rename to scripts/templates/tests_template.txt diff --git a/src/advent_of_code/year_2023/__init__.py b/src/advent_of_code/2023/__init__.py similarity index 100% rename from src/advent_of_code/year_2023/__init__.py rename to src/advent_of_code/2023/__init__.py diff --git a/src/advent_of_code/year_2023/solvers/day_1_solvers.py b/src/advent_of_code/2023/day_01.py similarity index 82% rename from src/advent_of_code/year_2023/solvers/day_1_solvers.py rename to src/advent_of_code/2023/day_01.py index 9fea4cd..d85152b 100644 --- a/src/advent_of_code/year_2023/solvers/day_1_solvers.py +++ b/src/advent_of_code/2023/day_01.py @@ -1,3 +1,8 @@ +from advent_of_code.utils.input_handling import ( + read_input, + parse_args, +) + import re SPELLED_NUMBERS_MAPPING = { @@ -90,3 +95,23 @@ def find_indices_of_patterns(line, patterns_to_find): patterns_and_indices[pattern] = [m.start() for m in matches] return patterns_and_indices + +def main(): + args = parse_args() + input = read_input(args.input_file) + + if args.part == 1: + accept_written_digits = False + elif args.part == 2: + accept_written_digits = True + + patterns_to_find = get_patterns(accept_written_digits) + calibration_value_sum = solve_all_calibration_values(input, patterns_to_find) + print( + f"Day 1: Solution with accept_written_digits={accept_written_digits}" + f" is {calibration_value_sum}." + ) + + +if __name__ == "__main__": + main() diff --git a/src/advent_of_code/year_2023/solvers/day_2_solvers.py b/src/advent_of_code/2023/day_02.py similarity index 83% rename from src/advent_of_code/year_2023/solvers/day_2_solvers.py rename to src/advent_of_code/2023/day_02.py index c9fb734..87bb078 100644 --- a/src/advent_of_code/year_2023/solvers/day_2_solvers.py +++ b/src/advent_of_code/2023/day_02.py @@ -1,3 +1,5 @@ +from advent_of_code.utils.input_handling import read_input, parse_args + import re BAG_CONSTRAINTS = {"red": 12, "green": 13, "blue": 14} @@ -52,3 +54,17 @@ def parse_game_string(full_game_str): def calculate_game_power(max_colour_1, max_colour_2, max_colour_3): return max_colour_1 * max_colour_2 * max_colour_3 + + +def main(): + args = parse_args() + input = read_input(args.input_file) + part_1_solution, part_2_solution = solve_day_2(input) + print( + f"Day 2: Part 1 solution is {part_1_solution}." + f"Part 2 solution is {part_2_solution}." + ) + + +if __name__ == "__main__": + main() diff --git a/src/advent_of_code/year_2023/solvers/day_3_solvers.py b/src/advent_of_code/2023/day_03.py similarity index 94% rename from src/advent_of_code/year_2023/solvers/day_3_solvers.py rename to src/advent_of_code/2023/day_03.py index def9617..a75069a 100644 --- a/src/advent_of_code/year_2023/solvers/day_3_solvers.py +++ b/src/advent_of_code/2023/day_03.py @@ -1,3 +1,5 @@ +from advent_of_code.utils.input_handling import read_input, parse_args + import re @@ -189,3 +191,18 @@ def solve_day_3(input) -> int: gear_collection = identify_gears(parts_collection, symbol_collection) sum_of_gear_ratios = calculate_sum_of_gear_ratios(gear_collection) return (sum_of_part_numbers, sum_of_gear_ratios) + + + +def main(): + args = parse_args() + input = read_input(args.input_file) + result_part_1, result_part_2 = solve_day_3(input) + print( + f"Day 3: The sum of part numbers is {result_part_1}. " + f"The sum of gear ratios is {result_part_2}" + ) + + +if __name__ == "__main__": + main() diff --git a/src/advent_of_code/year_2023/solvers/day_4_solvers.py b/src/advent_of_code/2023/day_04.py similarity index 85% rename from src/advent_of_code/year_2023/solvers/day_4_solvers.py rename to src/advent_of_code/2023/day_04.py index a401d90..81cecdf 100644 --- a/src/advent_of_code/year_2023/solvers/day_4_solvers.py +++ b/src/advent_of_code/2023/day_04.py @@ -1,3 +1,5 @@ +from advent_of_code.utils.input_handling import read_input, parse_args + import re @@ -75,3 +77,18 @@ def solve_day_4(input) -> int: cards_with_copies = compute_copies(cards) n_scratchcards = sum([card.n_copies for card in cards_with_copies]) return (total_score, n_scratchcards) + + +def main(): + args = parse_args() + input = read_input(args.input_file) + result_part_1, result_part_2 = solve_day_4(input) + print( + f"Day 4: " + f" Total points for part 1 is {result_part_1}. " + f" Total points for part 2 is {result_part_2}. " + ) + + +if __name__ == "__main__": + main() diff --git a/src/advent_of_code/year_2023/solvers/day_6_solvers.py b/src/advent_of_code/2023/day_06.py similarity index 81% rename from src/advent_of_code/year_2023/solvers/day_6_solvers.py rename to src/advent_of_code/2023/day_06.py index 5dea5f9..e99a557 100644 --- a/src/advent_of_code/year_2023/solvers/day_6_solvers.py +++ b/src/advent_of_code/2023/day_06.py @@ -1,3 +1,5 @@ +from advent_of_code.utils.input_handling import read_input, parse_args + import math import re @@ -59,3 +61,18 @@ def solve_day_6(input): races_part_1 = create_races(input, part=1) races_part_2 = create_races(input, part=2) return (races_part_1.solve(), races_part_2.solve()) + + +def main(): + args = parse_args() + input = read_input(args.input_file) + result_part_1, result_part_2 = solve_day_6(input) + print( + f"Day 6: " + f" Result for part 1 is {result_part_1}. " + f" Result for part 2 is {result_part_2}. " + ) + + +if __name__ == "__main__": + main() diff --git a/src/advent_of_code/year_2023/days/1.py b/src/advent_of_code/year_2023/days/1.py deleted file mode 100644 index f0a609e..0000000 --- a/src/advent_of_code/year_2023/days/1.py +++ /dev/null @@ -1,31 +0,0 @@ -from advent_of_code.year_2023.solvers.day_1_solvers import ( - get_patterns, - solve_all_calibration_values, -) - - -from advent_of_code.utils.input_handling import ( - read_input, - parse_args, -) - - -def main(): - args = parse_args() - input = read_input(args.input_file) - - if args.part == 1: - accept_written_digits = False - elif args.part == 2: - accept_written_digits = True - - patterns_to_find = get_patterns(accept_written_digits) - calibration_value_sum = solve_all_calibration_values(input, patterns_to_find) - print( - f"Day 1: Solution with accept_written_digits={accept_written_digits}" - f" is {calibration_value_sum}." - ) - - -if __name__ == "__main__": - main() diff --git a/src/advent_of_code/year_2023/days/2.py b/src/advent_of_code/year_2023/days/2.py deleted file mode 100644 index d57baf9..0000000 --- a/src/advent_of_code/year_2023/days/2.py +++ /dev/null @@ -1,16 +0,0 @@ -from advent_of_code.utils.input_handling import read_input, parse_args -from advent_of_code.year_2023.solvers.day_2_solvers import solve_day_2 - - -def main(): - args = parse_args() - input = read_input(args.input_file) - part_1_solution, part_2_solution = solve_day_2(input) - print( - f"Day 2: Part 1 solution is {part_1_solution}." - f"Part 2 solution is {part_2_solution}." - ) - - -if __name__ == "__main__": - main() diff --git a/src/advent_of_code/year_2023/days/3.py b/src/advent_of_code/year_2023/days/3.py deleted file mode 100644 index a65131e..0000000 --- a/src/advent_of_code/year_2023/days/3.py +++ /dev/null @@ -1,18 +0,0 @@ -from advent_of_code.year_2023.solvers.day_3_solvers import ( - solve_day_3, -) -from advent_of_code.utils.input_handling import read_input, parse_args - - -def main(): - args = parse_args() - input = read_input(args.input_file) - result_part_1, result_part_2 = solve_day_3(input) - print( - f"Day 3: The sum of part numbers is {result_part_1}. " - f"The sum of gear ratios is {result_part_2}" - ) - - -if __name__ == "__main__": - main() diff --git a/src/advent_of_code/year_2023/days/4.py b/src/advent_of_code/year_2023/days/4.py deleted file mode 100644 index d700f20..0000000 --- a/src/advent_of_code/year_2023/days/4.py +++ /dev/null @@ -1,19 +0,0 @@ -from advent_of_code.year_2023.solvers.day_4_solvers import ( - solve_day_4, -) -from advent_of_code.utils.input_handling import read_input, parse_args - - -def main(): - args = parse_args() - input = read_input(args.input_file) - result_part_1, result_part_2 = solve_day_4(input) - print( - f"Day 4: " - f" Total points for part 1 is {result_part_1}. " - f" Total points for part 2 is {result_part_2}. " - ) - - -if __name__ == "__main__": - main() diff --git a/src/advent_of_code/year_2023/days/6.py b/src/advent_of_code/year_2023/days/6.py deleted file mode 100644 index 9f2d95a..0000000 --- a/src/advent_of_code/year_2023/days/6.py +++ /dev/null @@ -1,19 +0,0 @@ -from advent_of_code.year_2023.solvers.day_6_solvers import ( - solve_day_6, -) -from advent_of_code.utils.input_handling import read_input, parse_args - - -def main(): - args = parse_args() - input = read_input(args.input_file) - result_part_1, result_part_2 = solve_day_6(input) - print( - f"Day 6: " - f" Result for part 1 is {result_part_1}. " - f" Result for part 2 is {result_part_2}. " - ) - - -if __name__ == "__main__": - main() diff --git a/src/advent_of_code/year_2023/days/__init__.py b/src/advent_of_code/year_2023/days/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/advent_of_code/year_2023/solvers/__init__.py b/src/advent_of_code/year_2023/solvers/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/year_2023/test_day_1_solvers.py b/tests/2023/day_01.py similarity index 98% rename from tests/year_2023/test_day_1_solvers.py rename to tests/2023/day_01.py index 11f508e..60c9f9f 100644 --- a/tests/year_2023/test_day_1_solvers.py +++ b/tests/2023/day_01.py @@ -1,5 +1,5 @@ import pytest -from advent_of_code.year_2023.solvers.day_1_solvers import ( +from advent_of_code.year_2023.day_01 import ( convert_str_to_numerical, get_patterns, solve_all_calibration_values, diff --git a/tests/year_2023/test_day_2_solvers.py b/tests/2023/day_02.py similarity index 96% rename from tests/year_2023/test_day_2_solvers.py rename to tests/2023/day_02.py index 5fd9667..0c32b3c 100644 --- a/tests/year_2023/test_day_2_solvers.py +++ b/tests/2023/day_02.py @@ -1,5 +1,5 @@ import pytest -from advent_of_code.year_2023.solvers.day_2_solvers import ( +from advent_of_code.year_2023.day_02 import ( solve_day_2, check_game_is_possible, parse_game_string, diff --git a/tests/year_2023/test_day_3_solvers.py b/tests/2023/day_03.py similarity index 98% rename from tests/year_2023/test_day_3_solvers.py rename to tests/2023/day_03.py index 1bc6c7b..9edf633 100644 --- a/tests/year_2023/test_day_3_solvers.py +++ b/tests/2023/day_03.py @@ -1,6 +1,6 @@ import pytest -from advent_of_code.year_2023.solvers.day_3_solvers import ( +from advent_of_code.year_2023.day_03 import ( Part, Symbol, check_char_is_number, diff --git a/tests/year_2023/test_day_4_solvers.py b/tests/2023/day_04.py similarity index 96% rename from tests/year_2023/test_day_4_solvers.py rename to tests/2023/day_04.py index a453ffc..7540be4 100644 --- a/tests/year_2023/test_day_4_solvers.py +++ b/tests/2023/day_04.py @@ -1,5 +1,5 @@ import pytest -from advent_of_code.year_2023.solvers.day_4_solvers import ( +from advent_of_code.year_2023.day_04 import ( solve_day_4, compute_copies, create_cards, diff --git a/tests/year_2023/test_day_6_solvers.py b/tests/2023/day_06.py similarity index 97% rename from tests/year_2023/test_day_6_solvers.py rename to tests/2023/day_06.py index a586498..4ce3697 100644 --- a/tests/year_2023/test_day_6_solvers.py +++ b/tests/2023/day_06.py @@ -1,6 +1,6 @@ import pytest import math -from advent_of_code.year_2023.solvers.day_6_solvers import ( +from advent_of_code.year_2023.day_06 import ( Race, Races, create_races, From d1230dc271800ca08e882df0dc135826493f290f Mon Sep 17 00:00:00 2001 From: James Lawlor Date: Sat, 7 Dec 2024 12:45:22 +0200 Subject: [PATCH 02/10] convert to dat file xt --- inputs/2023/01.dat | 1000 ++++++++++++++++++++++++++++++++++++++++++++ inputs/2023/02.dat | 100 +++++ inputs/2023/03.dat | 140 +++++++ inputs/2023/04.dat | 202 +++++++++ inputs/2023/06.dat | 2 + 5 files changed, 1444 insertions(+) create mode 100644 inputs/2023/01.dat create mode 100644 inputs/2023/02.dat create mode 100644 inputs/2023/03.dat create mode 100644 inputs/2023/04.dat create mode 100644 inputs/2023/06.dat diff --git a/inputs/2023/01.dat b/inputs/2023/01.dat new file mode 100644 index 0000000..51cba08 --- /dev/null +++ b/inputs/2023/01.dat @@ -0,0 +1,1000 @@ +heightseven4two5 +npskfdstpk2knsm +djnrmpxjbsbpgzvtjkhq6pkkfshx +kgsddxsevensevenlcmkdlcgtfbqxmlnkhbnvhshkckppn2 +8blvspztqjnine854fivefour +ninesixthree8six8 +5tnzrrzmcsnfivefeightrjninexrhnnfbcb +dcjcj2 +4fhcmhdtfourlzdphfxvlmvm6 +eighth33twobfr +qnb2sdsfhgxmfqqzkkjmfbxzjeight +seven4zzsmcqtwo +fourthreeone1two +kkncfbsrfdsix9rvfpjrdxbgcssmkztwo +959eight3two +sixpmvlkkdjf3frr91 +five3xhpsdfkg94two3six +bgqqglhqqtwohhqpgqjvqj8 +23seven +kkddrrtskfive75pcmhhxcxzfourthree8 +smtfgqg7foureight +281 +eighttxqtfjrldgxdpgkblzt3three +zjznfive4 +5hpxksxc +dvrkfvgvtwosnlqqcfivesixstglhvgfhlrgczzgvkvfour3 +sixllkhdpdxfvhqcbgz24two +drc79twotwofive +2vccthreefive6sevenrzqprfflnlsjtb +3four3fjqm7lntttphvs +threerzshdfgs4seventwolpb +9threehmbt5 +9plgm +17bjhndv3one2 +jghtqonesix3 +1kzdfjeightonesixtwothree44 +jpzs23gvjvsztbcvthree +v5hmkncqvtqxvtwotwofiveeighttqmbk +oner9kmfrjdbxcffl +bmnpn9n +3dsrcnssfgn +psstwonesevenfvctwo9vnbxflpntcdllpzpkgtwo9one +rkmbh8 +two1twokmkr +sixfour9xsmpzzseightvqn +threemmbrfxlqjtjgx95r9six +seveneightpthree91nine +twoeightfive7rdqqs4 +5threesevenhdjnrseven6five +45nineeightnvoneeight71 +hrprrsg6eightrmthree7xnkmdcdqm +cgfrgmflvthree38grksbjnpfhqpnvctrmtshffivemkzqmlfn +227 +79onethreervsjtpkkr +229twoonedcvz +8ltnnqmtn7threetdfxd3 +3358pvbtbonekpbcvbcrrz +fourrpkmtvvqfgsmxktqhvhb1mnbjj +91xmzmzfbt +vseven9 +6four2 +32q2 +bneightwo6eightsevenxl3 +two8jhbchqncbmsvfhznbvqmpxr931lnt +cvlbktjmsevensix9eightfsixthree +fivethree8sevenone +prqr1krjgkllqrdmjbdjnvvc +six4hspnpbgfivefour9fourxlsf +zhxsncl77321 +dlslthree1sevenkrrlnbzggtwofourtwo +rqtjzv2lqt7dfxcvfshtwo +31oneqrnnzbbjfthreesix9nhnpqmnbnx +sfhlrqt5649eight +sevenjzlxthree6kndrfvtwo8zjzfspgtr +2f +4bmzvbpkfmtwo946 +eight8qkpxm33ljprdctmghfrt +three643sevensixfour82 +vkdcnhhlhltsn6 +2sixsix264oneightm +6rbx9threetwothree +hhvtjlxgjpqbzzdcfpnhvncbqf94 +nine98 +jknmeight9seventhreemhdxddhfive8 +qljrvrprxthree1fiveeightwoj +bjtntqlhk3mhjqmd5twolqrjtsixfour +fdqddhxvone1twogjpqclnpjqxjpk8 +4cffzxeightfmbzfourn5 +56947cthvktgff +ztbhdtmxtrbr1ssxmzbvhfiveeightwox +two1phrvdx +16vvrs1szzk9 +67rhvtzvzvseventx7 +2kjnmseven8 +tonenine9nine +threeeightseven93jttxgtdml2threeflclh +2hxsdksfmdshxcdmxlb +seven9threeqslknninelfgmrsfjjjpklbh +3twosevensevenfourcgsmbn7hr +threevjvldjvstn2sixonevcljlf +17cninepqgjp +rjrnlknfivelscqfhhfv75 +five7hzvvh +31two3seveneighteightfour +78seven +threesixmzsldcxpjnvrkptwothreenine5f +trrxdhp8cqmfivexx7 +tgppgp9 +7five7grcdhsz5seven +31eight +nptmpmghrhsktcjthtonek15 +xgghqkqqqsdxgjzz7 +vsix1sbthreeonesix4eightwox +gqcvhpdvl5onejmlrlljrf +pdgmnmcptwo4 +dnzfgpbjxkkshgrg9qk +fourcrnntcxrhvnlsixbfhvvdncfdeight6 +84krfhzg1onesixhzgpxgmfivedkjqxnf +threembvltrgmgpp795xdtzsixtwo +nlcn8 +76ptqpzkllmvrpthreefour7 +nrfourxjqxkgqj6126gjrplj +tx685 +1fivesixgtlnine29fourmjgjgg +5vzx +86five +qjhgkzmplgql1jppdxmhx2zsbvnxlj9rbxvzsxnj +7pkgpzmfqr +two58eight9 +fcjnpsxthreef1pzgkxqhbfgvjzsix +4s95czbmjsbgvcztqncdk +72zczgsix2twomxpgxfour6 +nine7kfq +nlqcsrdcbkxsrgktbxch5zdjjkkz4fvk +34rhkrpfdpcrqmvrpltrssix +seven6mgdjmk3htqjlqbpbbfftt +3drdclclnsh1srjkshrc8fiveqtssmbdqbvtcbqzxx +4mdzjqnrjdj +gctoneight7fourbqhb3 +sixtjkrxjnj7threethreesixlbvpmf8 +9fourone4qzjzzzlhhljjqtfourhdjkqnt +dpdpxgxndx7eightthree7eightfivexdllmmm +nine6cnvftrddnnineqc1 +8thtdllhzv +qjgoneightgcmltsqcxrninevqxtfgbrp6 +xbxcl3glqgj +one7fivefour4 +fourlsfmgm7jr76 +5vszbtzdzhxmgrgjtt1qrczseven +eight67 +1jk96three5 +54ftvrpgzz3 +four4gnine +fbljngxt8threeqbttzsnnineninethreexdzggvjd +rmsix29fsfbmjjptf32 +x49 +5eightsndntqhhgg +pnlv9svhnskn1npbjxmsixtwo +eightzdvrjf4six9 +1sevennnkcdzcrthree8mz +eightrtgrfrnqninehbhllsdpqthreefourqk6eight +onefxtkztwonineninecfnf4 +threegf3jx +sphgjnpv51twoone +four89rhng +eightsix1threebfprrbzv +9sixfourlmnvgmnmkeightwoc +qrhsnjgndl7 +twoqqglxqbsix1nine1sgstftqjcmzp +9fivemqbjznffxq +lngzjghbbqmrsix5x +89ksqrbdpxfive7 +slbhmrvsstwo1gqcxztgdktqqxzmkpqfqfffgnhzfc +two4sixvtwo6x +oneonefive4 +twofourtfcqzptworq2nine +7pl71three3nclhsjcds +nlptvmgqfourfive7 +nsnzlcktmpcddcpffour3 +dtoneight5gxqbzbbvxc6gpplfzgmkbvmdnlhmg +zdcxqcnfive6gsqqvqfnine58 +fiveblnlvzkgjhbhfgqp6nine5kh +5onegbcdv51fxggdgthreedbbrlkg3 +29twobjpnjddone +seven9nvdndhdfourzhvqzctznqfour +3ztwosixcmbbztbngnsix9ts +8sixpxjcxv7zvf +onedsxmrhflvlqkzjjls8pmtcpteightfoureightvx +8fourfour +dpkhhvkxmttlk33 +three7txlxkdgcxglcb +5xzgxfgkqninecrkbzcfive3 +81fhfhpvxtnine2tfptjkthree +two2twosixgjfour +ncjdrcnptrtwovhzfive9threebmtttcznr +3xgnklgnnhbqgt4fiveghgksglkhlxm1 +five335five +threeninefourlqrgkcdlzfive5 +fiveseven89four8 +seven86spzkbt6mvq +3sevenseven +jm66b +eightqbttxcfzx88cnqjjdrhvcjzvfbdnzmrmvqbvhrlcm +ckmzsdhxqdrdntfivenqt36 +2hjb +twoone5two22mfmf +5rmfznvcjhhtccnkpmtwoone4 +478dckhsmpkmktgznjqfd +5gdqbjvdxv1threefoureighttwo7 +one646sevenmdmzzks +ndc1bxxdnqrnqntbvfxtqm6one +3vcsrrcfknmrgone +onexkxhbjkjn7eightfourqxtsixnine +sevenfive2seven327bdspzbv +fiveseven4xgpbb7four +ztjzhgsrm2seven +1twovslqxxvjxlprtbdjccscdtlngm4bxxhdhj +8rcn +ninelcqrtfbjxlvfourmeight54 +99466bbctwotwo +4twosixhpbhckdsevensix +4qmqrjsznine6 +189jninecxcmtpcx9 +rfbmtwo5gctcrqgthree +mcmpthree3nvmfshmjbtkgqsnine +np2 +four1fourjsghqgmfmrnzfxbh5fourfour7 +kvskplbpgfninesixvzkrv1fqnrjnrhvnpkpkhph27twonemvx +lghhsz175583 +onefive15rvsms4 +22twothreeeight +fkhsfjtqppgrckfiverfsrbggteight48eight +onem1two +nine2fourfour7mfourfourcpnvgcx +1czphscxrfrhqnqgn8 +ghgphgjrfcthreevpjdsevenseven8 +2gzcsdr2four5 +5eight5 +rzgsfive9lgbsqhsbxr +eightone5g +7six5 +63nine +7fivetwo9eighttbvmdb4jskprq7 +6pmgtckvz7 +nine49seven9gzppzm5 +7xqgxgxvqptwo81tlzzrchqxfq +two393 +pznknine67 +onenine514threeeight +mxbkksjfkrsevenc2dtzzfsnqhc1ctjthree +ntgmnhtwofourtwovbgmdnthree2pxv +sixnineonetwoone7rrqfive +vbz95two5zdxgtvnvrtmklt +vhdv7pcn4seven5one +zjqrxmm1ninefiveeight3spghctcttwogcqtrln +1fourthree8ntvlhmxvbbtwozlgjt19 +mg7csnjptsnzsix +4eightthreenineqtwothree13 +782mjrfmdf22sfive +bxfx7six4 +7three2dmmkz691 +sjc8ckjn +dkdfrsgb87cpnkchtgjnkb5q6 +seven2fhtdone9xtpbq7 +four3jmlftfzcdmcrfhjfkcfninefivesix +kdxrl7eightpsmlrkllmjdpslnine +three7nzxl3k2nine6 +7five8two +sv8mj87 +vqjzjjps45hdkcjbsl3eight174 +gfljtv7one2z +dveightwo7zrhmxjvlxftbjrqjcxlfive9 +threefjsvftzqneightfourtbvxqhssgrntdzpx2eighteight +fknxqdhdktmkcdfive1five +gs6168 +8twotlg +fivetwo7one14 +64tjxkdfxbvkthnnc +2onefivenrsgzpdzgjztpzpmeighteightttdfkgtkvltl +nineeight65three +mkbjxsgnineninesevenng2four +3xckzkhh88threepkj4five5 +ndxjxnvxbcfgdfz9fnphqrpvcheightpmxseven +2twodckhmzjvdgthreesix +rttwonecdl4 +qfvsd7kcqjphrqzmlvjffdscbeightfgmdpbfsdpseven3 +five68five +24tpfour17sevenlpkngxps +meightwokqnine1twojmsxxvbbrlqkprmxxlng +skkxpheightseventwosevenbfbcmzrpl3 +jvxhdnldseven58twofiveflsdcrnslqmqfvx +15ninexgmsvtpfnr +five758ssrnh +onezpkfv4vnhhslhgk91pfbtdgqqcmcdqnqxmk +rjphmdlleight5six7 +863xthree +cfghvcv5 +bmbfourfjtnxqppkf882k +dqnrjlvhxdfivenine8xl786 +lqrqspsxtwo6 +oneone9dkvzhsvgtl +9sixf +2nj +hsvrgtmkxcpxtjncmthreethreeone7one +vphqfour4 +qbpxpfmcxbnineeight8eight +26 +bbmspkz22onejeight1 +rljffive89phxltnine +five3dhscqeight3six +nine8msgnltpxf +38jxrfhbnclzzqqkvkgfourcfnxt +9fzlghgp +vjxprkvhpg1sevensdeightshmrfmmrt +95threethreeztmjkvqmgx +sixsfgrkqsc6dsixnineq +fivetwo267lgpttkflb6hcglpldzv +6cnscfjnlhh8x8qjbslh4 +xcxbjg192 +29sixeight +8xkpzfvhdnonemq67 +zxhbcmkbqpqkx1t97phfgdqfour +sixfivefivesix6sixsixjjp +5sevenfour1fourninefourfxsqhcpggone +ldpmdf37six1hfsmjnngmbbsjtf4 +fourtwo3lfzphbl1 +seven8cndkoneznhmtqnpr +9ztwoonegzpfjmgdjhhtglnsmjmqqssn1nine +3jvptqkjhchg9 +qbtwoneeight1nine9txvdpdlhv111pfdnr +3eightmkclrtz51zchkqh +eightpkrvkqgplptwothree5 +88gmb4dffm +fourghmpbfc3 +hcpllninenkcvjx1ghptwo36 +fourone8xdqmfnsdzgninerfbxbfourjshsvdksix +hkljqv5nfkbvveight5 +c9bczrtpqzj2 +xgjskgzkfive3oneighttdt +9one5psix5jcjlhz99 +8gpvvvhpfqb6sevenhjldkhsjskthhmzzgqxsflseven +96xjbsjmkgxgbknqckcrq +cdgjhklphq3chkgtwofour2 +nine9mqfbxdspvn17zkbl +3flbbpjgfh +two9gfn7three1 +zjcksix1dpkdbsxbrseven58 +oner9eight9mtspfsix +1hhdz156qpfmmrb +oneeight9 +crznkknhn716djrhfivetwo7 +thkoneight54nsix +xkkprql688onesixtwonine +791rvbxbcjzfqnine +fiver34 +3onefivenine183four +pkvdxfive6six +6ninesixkstsggvvvsix3two +onetwo6ctkntf +76sixfivefourhspsntf +five6seventkdstwoxdb +9sixzgmrrzfzcfzhrsseight4cprlmkplfzflz6 +fourmmbnpneight516one6q +rpp86sjvzxssbjtfive +three2sblnqxxjntksxjnvonedlbmxrrpzpcjpnn +lqcbbl2rxjhh17zxgjgtkvq2five +svvjsxxlh8t +6bhneight7ljjhjfvsbnsndvrc9six +sevenstgxksfmzd1ktwothree1mfour +527nine7 +295hkjbvf31 +bpzlfour1ninetwo5 +bh5seven3chjvfv +7vggcnckrmgbkx +msqpgd87 +ninekmnjsix9dd1 +three1two +qnrlcck47sixnrdkqnrxmlz5 +1rxseven891 +24b +4fdfrgzjpmltcqg36tpqqcvbznine +ftbtsix3 +njvzhlbthreezml8 +j4nineseven +4dpgmtgrn +97rnhk8rlp +3fivefivefoursevenflxvnbzlxhffgd +ftlbqxslq2 +eightseven3 +6dhcthree171fivecdldskdsgj +54nine +87twovpmn +28mzz +seven7csqxqn +crzrgqk66five5ngdh +xzjlmmtqgrtqrpmchfdbjpdjkqppxhsvfnzrth7 +sixfourjqbgsix3 +5eightnine54 +26gnqghndfcpmcvngqvzmfjpr8 +eightninethreebjjjvsgnonetwogflphxkvmz9seven +6qjqkmpstzc +three97sevenvxone67four +35ninetmdxqngxr7 +2sbrlnqz1 +pnv91 +5four744seven13rp +8bsix +8bcr +3eightljdhfxlnsgxs49sfzhzlsgvbldskr +835m7threefour +x3t52two +onelrzhp1one1seven9lcclzfkn +7rjzxvzdfeightlhzrnqseveneighttwoseven6 +seven13 +zkkknsevenzqsthreenine9four4 +vsszkfqpqtpxhqzpx6rkngzksmeightonesevenvzkd +fourbtkgjrglhxvccbjlnxlbhvsevenfourzjhcgmrr5 +two95 +73four5eightfive1 +8ninembxfprm28 +ninethree2twofive6 +18two +xjtwone7lfdzdvpccjsixp7rvhmh +six872jbhpgznrl8lkdbvfsgv +pnsbvfqtmkjtxseven7hkjhhmncgx +qljf6 +four3five321sixone +xvt15qcqd22six +1ndxz +gxfeightwo1two +22eighthxvrcmx8cqmfsix +3vxxlvgdvd3five3 +6threenine1tscqllqbone8cpzsnrxc +twoseven4snjpkmhnrb +gl3sixgxtttsldsmzhl5jgtwonem +seventtmxdmsjgtonebstmmskzsnsgthree2 +ctgrq17khfmdfbrl12txtsmtfndxmvcshxj +7six9mkkl +five1qxfeighttwo +eightninehckmhftskt7sixgeight2 +fllbppftcshjmtdthree8hpxlf +2one15two +qrzzg8mhqjpcbbfk +nnbnhlmgg3twotwosevenf +9tqqddhpsbdhdnkrjlxnqmjf +dtgfxfivefivefive6 +one5jgbcncmz4fpltcfcdg7 +12czktx +344nine +7zqd6 +sxgftzrr1pkffhkjtcv5mclnzsvdqktvkrgbnctgcnine +slfztfq5nineqcbdpcn5tczz3eightwont +9eight48kblmfc95 +4xmrglzxtsix +qhrgkbnsq5three646qntnvxcvg +vb3fiveseven9n +vgcdgctthree1281onemsxqvgnsix +bcstq5dghsfrcmftwo4lflbbrpztwo +hpjtwoninetwo87four6 +m3kgqggsdjq +26ninejzhmbp1 +nqtpvvsm4kjnkkz9 +5sevenfrqgpvqx +twobqcr9threeone +ninenine2qnnine +fournine629sixfive9 +sevenlsmstsxbpfzmkxsdp6 +1946one3eight7hhlqqkb +tjqmxhkhcsix6nineqdknshfiveflpcbxr +8seven4seven +8zjmndrdpgqsevencghkthree5 +bsrkpbhhsbpggn26 +11threethree89hqpvkqxzq +vjlhmd182hzqmsbdpnz2 +eightsjzfonebdcmlkcp3xdssfckqffsrpjfbb +krvssix8fmpfivezpljfpeightfdkzkgmm +fournrdhfbstx5fivefoureightfive2 +fivedfivejbjdd4eight +sevenfivetdf4one86vv1 +7eight7 +2fivedfsdxfplllfq +qcknrkljqxone75nvg85eight +vvrhxxvpvtsixrvskznine9 +sevengtcdtpgmfivexffgffst1eightjjmskvptrone +86five21zflbtcnlm +pfthree3oneninegzqpgxq2eight +17onekfhpvhppj1hdthrmdggxkgzxhxzdvbf +3sixzkml8eightfive78xv +pseightwosixxqjkfj484three484 +7zdpcvdnllthreefqpcttxbrtqpkpklnxdfszkxsbxx +2threeskpqphjffxnnvk6 +3nine66threeone46k +seventhreezgtlg12gndthree +8sqnqccmseven5 +sevendssdthreeseven2smpgpvdeightwob +hzcrrlkm8three +xtwone56pgzt5two +one4ldxzbjxlmsevenstqlgz +fourcxhqqlxfourtwo5mdjbzn +4eightbrtvsbjgnc +ninemfjghlonenp494jsjjnrhvdkthree +8threekccsevenfive +4bfvscrpfivetwospsvkvhmcptmxqseven +jzcbsgvljn5vtcpgh +8foursixseven8fivenine7 +sljtbrnsrcfourfivesevenzcdsqrseven95 +five8ninethreefive +fivekgcxtkjdvjlr9 +two2onefourkvgnzbfhhqgpdrjxfrrxdmrx +sixvb14sixkfjxrqskbq +three71nzrdggvlsxxxcfzdsrvpvbqsjn +vlrlvrqpvm98qphgsdkkmhdzfh +cmnpnvnine2two +fivexzdqfr4two5ninekgpzqfdgqlz +eight92dd2cgbqone9five +4eightfivevjfffd +57nrnktqrqlv6 +mqlhcpeight9zmsmh485 +hthxcv9l5one +nineeightlptl8fivefourmblrxbtcvlvjftcr5 +7fhgbqs +2v +jnhldbh7dkskeight9 +37fourlcsevenone5 +5jzntdrmfourhxrrfcxthree +four722 +7onenine +8sevenzfzmhkxjnr8four +nine2z +378bcbkrfsnfivesix2 +bdxrq6zsjkdcnfglc +4nqsvxznine271five +2fourthreethree6 +7twovkt6eightkmgzbd +gdsqb12rpqlfourfive +1gczfive4four8five2qbrsddkj +rrkctrmffive99jsgrbg93 +onegxssfourthreeeight2fztpvcvvn +fivesjmzppdlj57 +sixone35fourpj +nkqbbztcc7 +551mhjcn6onesix +49thkftkcsl +jthcqlp7reighthgdjbjpkxeight2 +threecfcmvgmsq534hhmbchteight +kjvdbsrbmxdjpjh7 +fivetfkphxzpkzpvrhfvbd4hfour6zhprttq +ccjcvssevenninensnpxcklbxqlcdgmvddsseven3 +2119six3 +5fourlznsqtvdcz +pfxfknrreight6twonine +bqrscdjrldsix5 +zznkptknm7rqgctxdthreesrhqkrdmsx +hmfjsqk6plqcjxcxmtwoninenine37 +meightthree65 +threenqqz7dhjsgzznhvm44six +86rdjfptxhhv5eightqkfive +91lfzcqshrfxssninejseven5tcqpdx +2xqhs +five6twognddnhfivesixxqkk1 +two85jrxgxcxbr +xfrqjfhpztqfourthreefour3 +tlqzlcckj2xrvvnznrnx +mltpqxbbrprvvlsfone8jbpjkjdqxtzlbnhhhhvshfnl +two9smqghpzpc2 +cqpklmdvnldgsdnlpmdpcql3jmlfvgxbgeight67 +7hhlcbpffour68sevensevenonesix +sixkvtclqcmlpjqvbbrn7ninevjrgxdhqx47 +975two +xdjb57five65sgghqkltxjtwo +8pnjssxdgbdmpbkxbdmhbr +3tgnrsevenrggtxps8rlkck5sixcrdccvcqg +xvvglr4 +fourdqtzrszxdvknq9dvxks +3btdbfourthreexhnjqrtnnxttqcfsevenlvhqxrsbpgqxjfvp +9onefzskrcpmpthreextjnlteighteight4 +hgvch3two +7nrc +5mnhgg +4twonine +7six6six +vjeightwoseven83mjfdpzrnnp +gfrgsixqmcbdjrtwo4tsxghf +7mmvkgmq +8qckbxdkqzsclqfive +3four52eightdhmr66 +ftoneight3bdbqgtfmsrfive3seveneight +scrkzrfive66 +9nb42xdrmbzpz +threetnpkv276one4sshmxpdc +2455zjh1one8 +6nc4seventhree +zjf5rnpnrdffjsix751mqbpgfgfjn +2crtmctwoseven +45fourmxzqzmpsixr3 +91lxbnn1twoxrsjsppjtwoone4 +37four6 +rkqb4eightthreesix93kqkhfsvngljp +ghhhksix38eight1qplkftstdnone +6nlxxncvqv71fbv +9169nine6kvcklgmn +vlddrrvcbd87mctrcj5 +one6fxninesixshdrtvglzlfbzlkvpmtxsix +threemkrzrthree234cnngnflmfdvkt +onefdcdnss8xx1 +oneone8mh8eightzrstvstwo +fivekdmdgdqpcpnineqzmnpsjktzxpvbzrsp1eighttwo +fourxckchnmz2five2hcqrsxgj +38five +onefivethree4cone +fourjrzqcjjvgm6five +9lcjvlsixtfdktbkvv1gsncxfdhhttxlzb64 +7two4one9 +7nineznmdvrpl +threesixthreelkvmhzhtd6 +mxdglbdzqlthreevbjlzmvf9mkbdrtxpsxpgpkdtfh +rjkpvjtdbxsnhrrhseven2eight5six59 +five8sixhblpctxnvtwosevenfour +9rvhtjcb +3ninenjgftq439 +99oneseven61 +54sevenfive8 +foursevenfxsmzxccfnxxc94eight6seven +3p4hnbfcxbzfhrnnhtbmprdhxbfivekqkhzbnkc +fiveeightqpghr9kfdqdlqfour +7five18qkqkzhs75rp +fourtwo3fivetwo +eightsix28klprqxzjfiveone7 +twofourthreethreethree4 +75six648 +rmpndcb797seven1 +five347dcqzmlbdxprzlkkds5ps +mnkmhrlgs7 +tknjqmsfivesevenninefour1jrlrpkl4 +6three62 +eightjrrhxd7csevenvfive +sixh3dvfjlxxkjj +5251fourmtxrpxvvbp4fblrpgtnlgg +948 +76fournine +eightseven4six99threeseven7 +73nine7 +4pknine +6eightmdmmdjone +22nine9kbgfdvjqvnmfqglhpnfhfvzxd +five6srlgmmvs19four9 +4nineone9sixs +four9tgpzrhjzqlhlxgqfz7 +nine5onedxflzhgf9one96 +hpf55 +kreighttwo2 +eight2seven29three7 +three7two1 +dhtkvvtjgzvrrvcjnqlbjsseven6 +93twofourninekznthreeseven +rzvll61 +f47ninexfqsbdrseventwo7twonep +qxcnfoureight6fivetpxbmbtwooneightm +xqkvmbth6onerzgvx +ndmjbvgzkxbttwo5one399twonef +88ncg +twomfiveninetwoltcgqkdch9three +bjgnmpfzninesxbxnlplk45 +jv5tcfkksdmtthreecvsgz6hp1 +78fivehssmgbkzlb +ztchfjrmpgsevenzsjqzmsjj8ninehrsbgknine +tksztsix9kqfbstltqdpdfqjgr1 +413ptmm23two98 +4gkzvsevenfivefive +bxms6rcd +k8two918hrnine +threeone4crkrbm1dmdlqqd +foursix5nine +one4trvninevmqx6four +threethree8five911 +6l4fstcmprm +seventhree91 +onesptwoqknsbrhnine9 +9ninebkmzsixvqnb5 +seventhreepxtcrc3gkfdsfpsfgfzvlfndgb +pcvfrsgthreeftsjvclfournine1kbbkhgrrvblvbkzgbpc +bpjfive9kdlcxbgn9zmcch41 +hcbflhjtsfour7qdjvv5kzjrpl +dbzd6mmsn55fivegkl +5stcpjhscvlsix2qqcbtxnh48 +lxfztjckeight2jsvfs8fivethreetwonel +jf3dbxqmngr +tqzqffdgnstwonnleight4rseven +18threeznntcqpxtlq +fourrmzzjvz18 +9ppbgcnvhhq3ccmsndrc5nlp +3pqlfpfltzh +2qsx4npflpn6seven9 +one2fhhfdzn +fbztdmqfgj91zskxxdcvbeightmbspgqmbggtnpg +24nhzonefourfvjq +7lfvgnpvbvjtworpvcfqqjbthreeone2 +csrcthreeeightsevenx9ninesixsix +43bncszsgmljgndbgnqc6 +13onedrjnonenine7 +six1four +sixeightone2two6four +fds3sdhbonenjlllhqfc9threefour +mbslpskb82four719 +6seven5 +sevenfour9vsixrn3 +755rbnrkmd7sevensevengshmzhmzrpzqhq +eight7khxnvqpjd +clfour5jppbonevgfj9llhfggbz +zcskxrshvbhn4nineeightndhnxs +ltzzbeight4onepnine +fives8fivethree +s5476vcslone +lj9ninekbjzlgqfour +four8gjvhkcvlml +twoone9fivecgcqlqqn74rglfbqbf +vczbllnkxkssmmtrz3ddpzg +threenine9cdqjmsfgspfive +dxtclhmkjxqsgcs938sjr4 +nrqlljlsixjhbfttptcchveightfour4fivesbhgpcnzg +sixthreefourbrtstxbh32 +sixhgdsqj22 +phshjcs7 +fivesix9 +48cjfeight83 +617sevenonesevenqjprssznhmfzrtf +two6three95eightfour +99sixone25jfssmjsmxj +fblfkzkrzqjdbvpmvvf197 +kghllmbfiveplhptxt71vjtcmdrql5 +fivenine6 +six7drddptwo3fivefour7 +57four66jxxjv57 +3blj9twotwofourfive7 +eighteight64nine +nineb9four8 +27cztm +18cgkcnxfgrlsj1chrpxqnnrcone +47sixthreefivefour93xmfndrz +gmhxpninehvfbqdkbbb74drcknctrthcvvbrllvfouroneightbbx +8tccpt1seveneight5hsmxvvdffive +1ninefivecqkchg +seven6six4jjfive2 +twotwozvvkrml3nine4fouroneightxg +482tlvrmdkzfour +fivepeight2 +one3threerfdlnrq +seven3onefivefive3 +tjnxfjrs5dfthkrxklhrnsix +keightwohzzxgnvb2 +kseven7six3five2three +sixvxbccbjmvrbpqxcrzfnsevencdfptrdeightfive2 +24vqldhgtpzpqmsnvcn4onekfvbhzrbrkqvh +mdnl2 +9sevenlfkbtsixvspnnxbvkd +cvhhcvhlgc3eight3 +8sch3one +nine4xhfrppmffone2ninecnrdtrlzzmkrsqkkc6 +three81pfj +frnrxhkhfkncxeight557one +6gcvmmvmlss33 +3zkfmdrc9four23vqvpgd +three71gqdcpzpxkffhpbnbhfjgrhlzckmcrdtrvpnckkvmsp +2phtgvfsevenpcpcvkpqgvkddmzdtbzxjppppptr8 +tzp3ljzslxzldqqsgl99 +eight24five1 +ssfjsnxptwo192threelcdbeight +eightnzdnxpgvzqh7eight76tcj +8598fourhclmkrtzkjgkfr1four +83qfzhmfnsixfourqfpjclprrv64nlxbqdbbst +vdlsvfourcnnninetwokkctqtl2 +lfxoneight8grninesixtwo +82onevhzhthree6 +qzjxbls1 +fivethree1three +qgcqc6two3xcdgfsfournine +6sixdtpdpxrjsixoneightbfm +two4foursix +ts2xkoneightr +gtkhl73onesix1 +7xqmpssix +sixsevenninejjtrh64 +6q2six6 +sixndmphqqpft3one7ninerksljn +eight44c +ppvsjhv32jzctbzceight +ppgeightwoklgkdchccmxxsixbqtkheight56 +ninefourtwo5sixsrrv18 +fivegvhbvkggpcqvksn34fhcxrmhvvt +nineone6eight29jhv +3dvsfpt4two +8257kbvkjjlhmr3 +9ccone +pcmmcblfqfpgxpssnk2 +1twofqfour7two +six96twonvrmnzzeightwoc +kqgsdxjjksdnzjdcd1jqnkz +threenine8698 +seventhreethree1251 +fournnkdvms6fjggsxlljshhmh9sevenfour +2lzxtcvvchmhxhqlxrjspg3 +6jxlz1cqbcjbhfxb9321twoneqq +fivefourfour4 +foureightbjjd7grgvxlm2three +zcdgdslqkkzhmsbdtmvqbmgfqdg2twogd +82onemfffnm +48trdhznd1 +5sixeightsixsixcsjsrnmzbcdjn68 +lvtjmrpfouronethree84dcccm +3sixfsrfour +sixjsvlzzgxrxmnine1kzjrvxmghfour7 +nrqqgsmpkcone3one +lmnzcqrrhvkckzdg5 +29fivebnnh4zv +threefour9dz4mvhh2threesix +six7two +two5zx1threefourseveneight +frb1threefour +xgrrxdmpcc4lvnhpvgcdlone89 +five28qtnxqxshrmspdghsfvoneqzzpjlnvxnrctptlv +eighttwo6eight88seven4 +fmxdtnxfrfivethree2jqqx +cvxktgdvtbfqkvvds2 +vkhmjnlk99 +vvhphh2ttjrscppq +sixjfxxqxxhdhjcthp3three +3gvjntkzcmbninenj +sdlpseven9pdcvonefiveone1 +23pcvcljhtgbthree1eight5one +3kreight7k +mlxvzqjsthreesix98 +6h94sevensevenldthree +six86 +four1four15seven +rvqbkndfqjeightseven84 +one5two672 +two7three87fmqgdmqvcvn8 +qxkkgsixbdrqz7pqsfms +four2v1seven99five +7ndxpm +lrrqxnjtvzfdzplxppzonetwokrmv131 +fourgvjbhpxqcseven1four +thrthbgthree7four +jbnkcqqczzpkq357sixfrgsjhjmxt +rvrjsdnfldcqnplsqfnine6three5 +jgkzn598fhqqxmsqjgpzonefour +qkjl1vptpmsseven41oneone +fiveh94two9five +2lrxjflmvq9 +jtcdnjtcgffourkztkqfrfourtwojpqtq7qjdzkfour +eight3dlkndonethreetwo9one +2bqfprnkz +ninesevenfive63gxgmjvqf3 +tkvoneightsixsevenfour8nine9gzn +sevenninemlzdbttpp3qb31jmmtmbqnr +hdslnxgdz48 +four6prrfbtqrqvdlx81 +2hgqtnbxnqtpfive66dpn +jhkjstxzblfive6vvd +ljxqtqrgm6bgfppeightseven9 +gcmlbqtnm4jqhdhsfour2ninefour +threeeight1hrdqptwo6 +mlxvrhjqz4twolnkqd +npgnsgkmxmeightsix4brmcjjlbl6 +jrtwosixvrtrfvvpnine8hhqcsj2 +5ckctkfour433qd +9zczvzz +one46ninenhjzfhqcbtwo +26mvspqqkxntwomgsfvmfshvmndcbnfxzx +zhponeightbslzggxnpjgt97xjvxqrrsgj6zclqbmsdb +175 +fivetwofiveeight2five +three9sixtwo34 +7foursixhjvpndkjtqzshxdczg3three9 +8six3hqbcnjsdxr922vplmp +tmrbnzlrs822nineeightnine +two36nine6zhvmfss +qdkcfrmb7 +9dcbzzhhgnclcdchgcthree +tmxkqqstzqmp5pf97 +four86fivekbpjggeightnine +mmsvnnxeightjqpdsdmgjzssssjtwofive6none +5bchshczsjdh +39five8cflqglqhbsixmqnfpqhh +8five89threevkvgbtjrhhkqdkllkqtdjrv +ninelldnine4 +fourseven52threebstwo +9zdkqprhfdnthreeddj +threetwo5tzthreetwoslzdkf91 +eightone5twofourdhdjpsbj7 +2nine1ninesixlnine7 +threethree824six +threecbcvvcdgnzthree8nine2ckcvvqvghhthree +nineninefour9ddctwo38 +sixthreeghnblhbsk5 +8threephn +tpvoneight1sixjzkrtjcbpkxgvnccxvxbglhhgsevenkchhvchz +xcdsxxfivethreecdd77 +seven3twomrjfrxninefive2 +82twotwolsm +njljffrkrgnineone5fourtwo34 +9fsrnjjfkeightstjffdpeight +lz77jfdvgq +8skninektrzgsonesbnszbzsbfxgczgt +6lkmpnhjbsjeightvhfqnhtg +jmkrn89onenine4 +84xznbtgmsrg +twonineldsmg59five +z8vgkntnsmntqdhnphjppx8hfvptkrpbmjkg +1sixsixonemzjcbchdkeightsix6 +cnthtftdzhjxc9fivetwo +four99 +tsfhcrqthreecnsf49tnpjtvfjm +3vmrlbdone +fourtwoseven8klx8cjqnlf +5533 +96threesixbb8jcbtlhd +93mjghj +tpq7ninenine58 +twosxzrdncbhr5gnqv +8tgmmjxntmbdrtoneone4five +onehgnthree24 +4ninebrjplcxdthreekmzchvhpkm3zfkvbtp +sixgjrgcvhphv5threekgqtszxllxhdldzbv +krq9nine3fqhdvnrbmncseven6 +six85njxj3mmphzpv6dhqlkmptldvlflckgk +44eightxjtvfbmt +2fp9 +skjxglseven5nxfdgjlclv9 +zbmxptthreechlxvxszszztqqs4threefouroneone +47633nine +8584mrvjdspgmsevenfour8two +five5nzcmgx +4threenine19twonine +kztfivessbtzfjbmjmsnjxkct7 +2onesix +nine6kfpkqhkjzsknrldfcghcgkghnine +9cbhmrchmqjrhqx7zsdxmtlbrzfive7 +87eight16dmgpfcfvbt +three45sfourtwo3 +2xvmdthreeeightthree +zblpmvk2fivefqdjqpdk2eightwods +nvrngd1one642 +twoninesix8tvcm4 +sixjjrjrpjbdlsix5kscvgfour6 +oneninefjmblx25lgstzzkvnqcjl +5fournhphcqqzngvcjphfnhgr +fourninetwo226 +sqszqk8154five8eightnine +5rcqxrbv +3three7three118 +9dlgvvnpsjrhxjpjr +cgttwo97qceight658 +3eight8threefourthree8jvld +sixbctkcmzbtb4ntgtctgtr7three +36three92 +9twonezv +ddrhf7ninefiveonefivefive +4dpc75eighttwonine +27three +837ninethreezdcdbmjtph +two3jgj8pfptxbpjcfournine6 +r8mzqvthlnljthree2 +foursshmxt4qhsnxtwotwo3fpqhpd +ntlfvnxkxxvtktmbqfourqjzjdcdthree76ninetwo +7zfhfmqmbkzrknxcfgxmqh +zfzfcsbkld9eightthree +threethreebxqqsnfzvqfivefmnc71 +one3onesix63mxgmcpqfvnfiveq +9four7twofourtwotjlpcqeight3 +1dcnsvzrstslsqvcvonetwofour7 +cg12five +5twosxfsbmxrtl +seveneightsix3gshhcnjsqb5 +9xkvfhcmrs87 +lpkcnjpsix1fivetwo +9dsninefive6lhjpdkpcr +838mjxsleightnine +seven4ninefivefourhxplgzfvsevenbbdjqc +1drcgshkfthree3nlkztjtrx9five +7three4seveneightfxsz +7onetjjkznvlb +93two4foureight +8fqddclzvlx +tdpcspmg39ddqkdlpjxvkdtjpc21 +fivessmncpxsd3eight +44hjrhqdqf19pxkb +bmcgjkkkhfive5twonekc +twomv4nine +16rrksxjzjlt5plmvjtvhkfnineeight +cmczrnjjsntptjffzrpqthreemjpfhsjbrmnlkzpvvvmj8 +one81six +9jfivefive82rz +one32fourfivelkrczztone +seveneighteightfour1 +58twoxgklhpndxjrpb86 +five2sixfourcjfvnmhrxrtwovhrdrfrssphgtcqthhzxh +lxtbmsevenbms3one8dsbsixnine +sevenhcgr6ninefour +trknlxnv43zxlrqjtwonect \ No newline at end of file diff --git a/inputs/2023/02.dat b/inputs/2023/02.dat new file mode 100644 index 0000000..cca5ee9 --- /dev/null +++ b/inputs/2023/02.dat @@ -0,0 +1,100 @@ +Game 1: 4 green, 3 blue, 11 red; 7 red, 5 green, 10 blue; 3 green, 8 blue, 8 red; 4 red, 12 blue; 15 red, 3 green, 10 blue +Game 2: 3 red, 1 blue, 2 green; 1 blue, 9 green; 1 red, 10 green +Game 3: 5 green, 9 red, 4 blue; 3 green, 7 blue; 12 blue, 3 green, 3 red; 3 blue, 7 red, 2 green; 7 blue, 3 green, 10 red +Game 4: 2 green, 2 blue; 12 red, 9 green, 2 blue; 13 green, 15 red, 4 blue; 14 red, 3 green, 5 blue; 6 red, 1 green; 1 blue, 2 red, 2 green +Game 5: 2 green, 6 blue; 1 red, 3 green, 5 blue; 3 green, 4 blue; 3 blue, 5 green, 1 red; 5 blue +Game 6: 5 green, 1 blue, 3 red; 8 green, 15 red; 16 green, 5 red, 1 blue +Game 7: 1 blue, 3 red, 11 green; 18 red, 16 blue, 5 green; 13 blue, 5 green; 1 red, 8 green, 15 blue +Game 8: 1 green, 14 blue, 1 red; 10 blue; 1 green +Game 9: 4 green, 12 blue, 1 red; 14 blue; 2 blue, 4 green; 4 green, 1 red, 10 blue +Game 10: 11 green, 9 red; 12 red, 9 green; 5 red, 7 blue, 5 green; 6 green, 1 blue, 12 red; 3 red, 3 blue; 16 red, 9 blue, 7 green +Game 11: 11 green, 1 red, 9 blue; 2 red, 13 green, 5 blue; 5 green, 2 red, 5 blue; 5 green, 7 blue; 1 red, 5 blue, 1 green +Game 12: 5 green, 1 red; 1 red, 4 green; 1 blue, 12 green; 15 green, 4 blue; 4 blue, 19 green; 16 green, 4 blue +Game 13: 1 red, 9 green, 5 blue; 10 blue, 7 green, 1 red; 3 green, 2 red, 14 blue; 16 blue, 3 red +Game 14: 9 red, 1 blue, 2 green; 16 blue, 7 red; 2 green, 3 red, 14 blue; 1 green, 9 blue +Game 15: 6 blue; 4 blue; 1 red, 16 blue, 3 green +Game 16: 14 green, 5 red, 1 blue; 1 red, 1 blue; 5 blue +Game 17: 1 blue, 1 green, 3 red; 2 red, 2 blue, 2 green; 1 blue, 1 red; 1 red, 2 green, 2 blue; 2 blue; 1 green, 2 red, 1 blue +Game 18: 4 blue, 2 green, 1 red; 1 green, 1 red, 10 blue; 1 green, 1 red, 2 blue; 1 red, 5 blue; 3 green, 6 blue; 1 red, 1 green, 7 blue +Game 19: 1 blue, 13 green, 12 red; 7 blue, 2 green, 1 red; 1 blue, 3 red, 3 green; 3 blue, 8 green, 10 red; 7 blue, 2 green +Game 20: 1 red, 17 blue; 10 blue, 5 green; 9 green, 1 red, 3 blue; 1 red, 5 green, 1 blue +Game 21: 3 red, 6 blue, 5 green; 4 blue, 1 red, 7 green; 6 blue, 4 red, 9 green +Game 22: 11 blue, 2 red, 6 green; 16 blue, 5 red, 6 green; 12 red, 2 green, 10 blue; 14 blue, 2 green, 11 red +Game 23: 3 red, 5 green; 10 blue, 1 green, 9 red; 2 red, 10 green, 9 blue; 9 blue, 7 green +Game 24: 8 blue, 1 red; 3 red, 9 blue; 9 green, 2 red, 8 blue +Game 25: 2 red, 1 green, 1 blue; 1 green, 12 blue, 2 red; 2 red, 1 blue; 2 blue; 1 green, 10 blue; 6 blue +Game 26: 2 red; 4 green, 1 red, 7 blue; 11 blue, 2 red, 4 green; 1 red, 1 blue; 1 red, 5 green, 12 blue +Game 27: 1 red, 7 green, 8 blue; 13 green, 12 blue, 1 red; 6 red, 1 green, 10 blue; 8 red, 2 blue, 2 green; 11 blue, 4 green, 4 red +Game 28: 1 red, 8 blue, 3 green; 12 green, 4 blue; 1 red, 4 blue, 11 green; 7 blue, 10 green, 10 red; 11 blue, 7 red, 8 green; 10 red, 2 green, 2 blue +Game 29: 4 green, 2 red; 1 blue, 11 red; 2 blue, 3 green, 1 red; 16 red; 3 green, 8 red, 1 blue; 2 blue, 7 green, 12 red +Game 30: 1 blue, 3 green; 4 green, 2 blue; 3 red, 5 blue; 4 green, 1 red +Game 31: 2 red, 2 blue, 3 green; 2 green, 3 blue, 8 red; 7 red, 16 blue, 2 green; 5 red, 20 blue, 2 green +Game 32: 2 red, 1 green, 4 blue; 4 green, 4 red, 1 blue; 4 red, 4 blue; 1 blue, 4 red, 2 green; 4 blue, 3 green, 4 red +Game 33: 11 green, 4 blue, 10 red; 2 green, 13 red, 7 blue; 13 red, 2 blue, 8 green; 15 red, 9 blue, 12 green; 14 red, 10 green, 2 blue; 13 red, 7 green +Game 34: 11 red, 6 blue, 4 green; 16 red, 7 blue, 4 green; 6 red, 18 green, 6 blue; 3 blue, 16 red, 3 green; 2 red, 3 blue, 17 green; 3 green, 9 red, 6 blue +Game 35: 6 green, 10 red, 12 blue; 4 red, 1 blue, 2 green; 3 green, 8 blue, 7 red; 6 red, 12 blue, 2 green +Game 36: 4 green, 2 blue, 2 red; 3 green, 10 red, 1 blue; 1 blue, 3 green, 2 red; 2 green, 1 red; 1 blue, 5 red +Game 37: 3 blue, 1 red, 2 green; 8 red, 4 green, 10 blue; 4 red, 4 green +Game 38: 13 green, 3 red, 2 blue; 1 red, 13 green, 2 blue; 20 green, 3 red, 2 blue; 1 red, 2 blue, 12 green +Game 39: 13 blue, 1 red, 8 green; 5 red, 3 green, 8 blue; 6 blue, 4 green; 18 blue, 7 green, 1 red; 4 green, 3 blue, 5 red; 6 blue, 4 red, 1 green +Game 40: 2 red, 2 blue, 9 green; 1 blue, 2 red, 12 green; 16 green, 11 blue, 1 red; 1 green, 2 red; 3 blue, 2 red +Game 41: 7 blue, 1 red; 4 blue, 1 red; 3 blue, 1 red, 2 green; 13 blue +Game 42: 18 red, 1 green, 13 blue; 2 blue, 2 green, 7 red; 16 red, 12 blue; 1 green, 10 blue, 14 red +Game 43: 15 red, 6 green, 2 blue; 3 blue, 9 red, 3 green; 13 red +Game 44: 2 blue, 5 green, 3 red; 4 red, 4 blue, 19 green; 5 red, 3 blue, 9 green; 19 green, 6 red, 5 blue +Game 45: 5 red, 4 green, 13 blue; 12 red, 10 blue; 3 green, 9 blue, 5 red; 10 blue, 18 red, 5 green; 16 red, 6 green, 17 blue +Game 46: 3 green; 3 green, 2 blue; 4 blue, 2 red, 3 green; 5 blue, 3 green, 4 red; 1 green, 1 blue +Game 47: 2 blue, 1 red, 10 green; 2 red; 6 red, 1 blue; 16 red, 2 blue, 8 green; 5 blue, 8 red, 7 green +Game 48: 11 green, 4 red, 2 blue; 2 blue, 5 green, 8 red; 9 green, 6 red; 3 red, 3 green, 1 blue; 2 blue, 12 green, 17 red +Game 49: 10 blue, 4 green, 1 red; 10 red, 10 blue; 12 blue, 7 red; 13 blue, 6 green +Game 50: 1 red, 19 green, 7 blue; 4 red, 1 green, 5 blue; 16 green, 8 red, 8 blue +Game 51: 12 green, 18 blue; 13 green, 14 blue, 4 red; 7 green, 4 red, 14 blue; 8 green, 2 blue, 3 red; 16 blue, 8 green +Game 52: 9 blue, 9 green, 3 red; 8 blue, 1 green, 13 red; 2 red, 8 blue, 9 green; 13 red, 4 green; 6 green, 15 red; 11 blue, 11 red, 9 green +Game 53: 2 red, 4 green, 3 blue; 5 blue, 16 green; 4 blue, 8 red, 12 green +Game 54: 6 red, 16 green; 6 red, 15 green; 8 green, 8 red, 2 blue +Game 55: 9 red, 2 green; 4 blue; 2 green, 2 red, 7 blue; 1 red, 16 blue, 1 green; 17 blue, 5 red +Game 56: 14 green, 3 red, 9 blue; 14 blue, 15 green, 2 red; 8 red, 13 blue, 15 green; 15 blue, 2 red, 12 green; 3 red, 7 blue, 10 green; 10 blue, 13 green +Game 57: 1 blue, 10 green, 2 red; 4 blue, 9 green, 11 red; 2 blue +Game 58: 4 red, 2 blue, 5 green; 1 blue, 5 green, 4 red; 3 green, 4 red, 8 blue; 4 blue, 7 green; 5 green, 4 blue; 1 blue, 6 red +Game 59: 5 blue, 4 red, 3 green; 8 blue, 12 green, 5 red; 5 red, 8 blue, 15 green +Game 60: 6 red, 12 blue, 1 green; 10 blue, 20 green, 4 red; 6 blue, 1 green, 5 red; 9 red, 12 blue, 14 green; 15 green, 1 red, 14 blue; 10 green, 13 blue +Game 61: 1 blue, 12 green, 3 red; 4 green, 1 red, 4 blue; 8 red, 4 green, 6 blue +Game 62: 6 blue, 7 green, 3 red; 6 blue, 3 red, 3 green; 11 green, 6 red, 2 blue; 2 red, 6 blue, 3 green; 2 green, 3 blue, 3 red; 3 blue, 11 green, 11 red +Game 63: 5 green, 6 blue, 4 red; 6 green, 12 blue; 3 green, 9 blue, 10 red; 1 blue, 4 red, 5 green +Game 64: 10 green, 14 red; 1 blue, 9 red; 3 green, 10 blue, 14 red; 5 green, 3 blue, 12 red; 5 blue, 12 red, 13 green +Game 65: 1 red, 5 green, 10 blue; 14 red, 5 green, 10 blue; 10 blue, 10 red +Game 66: 9 green, 8 blue, 1 red; 8 red, 14 blue; 8 red, 7 blue, 2 green; 4 blue, 3 green, 5 red; 2 red, 8 green, 8 blue +Game 67: 4 red, 3 green, 3 blue; 4 green, 1 blue, 4 red; 1 blue, 3 red; 10 blue; 16 blue, 6 red, 4 green +Game 68: 6 blue, 6 green, 9 red; 4 blue, 9 red, 3 green; 3 blue, 8 red +Game 69: 4 green, 12 red, 3 blue; 2 red, 3 blue; 2 blue, 4 red, 2 green; 1 blue, 3 red +Game 70: 4 red, 3 green, 15 blue; 1 green, 4 red; 1 red, 1 green, 5 blue +Game 71: 4 blue, 2 red, 10 green; 7 red, 6 blue, 11 green; 4 blue, 7 red, 8 green +Game 72: 9 red, 9 blue, 1 green; 4 red, 6 green, 5 blue; 3 green, 7 red, 2 blue +Game 73: 3 green, 9 red; 4 green, 15 red; 12 red, 2 blue; 14 red, 3 green +Game 74: 2 red, 6 blue, 1 green; 3 red, 6 blue; 1 green, 12 blue, 14 red +Game 75: 3 green, 18 red; 1 green, 7 red, 1 blue; 2 red, 2 green, 3 blue; 11 red; 2 red, 3 green, 2 blue +Game 76: 6 green, 2 red, 5 blue; 13 green, 5 blue; 5 blue, 1 red, 1 green +Game 77: 4 blue, 6 green, 3 red; 15 red, 1 green; 4 green, 11 red, 13 blue; 8 blue, 6 green, 9 red; 3 blue, 1 green, 11 red; 3 green, 3 red +Game 78: 11 green, 1 blue, 2 red; 7 red, 16 blue, 11 green; 9 blue, 10 red, 6 green; 1 green, 8 blue, 10 red; 8 blue, 6 red, 1 green +Game 79: 2 blue, 5 green, 4 red; 1 blue, 1 red, 1 green; 1 blue, 5 red, 10 green; 6 red, 3 green, 3 blue; 8 red, 9 green, 6 blue; 7 blue, 6 green, 13 red +Game 80: 10 green, 7 blue, 5 red; 5 red, 1 green, 6 blue; 8 blue, 2 red, 8 green +Game 81: 3 green, 10 red; 6 blue, 8 green, 14 red; 4 green, 4 blue, 13 red; 5 blue, 11 green, 6 red; 16 red, 8 green, 5 blue; 6 green, 18 red, 6 blue +Game 82: 13 red, 1 green, 7 blue; 8 green, 4 blue, 12 red; 18 red, 5 green, 3 blue; 13 red, 4 green, 9 blue +Game 83: 1 red, 3 green, 4 blue; 5 blue, 4 green, 1 red; 3 green, 1 red, 12 blue; 4 green, 11 blue +Game 84: 3 blue, 10 green, 2 red; 3 red, 8 blue; 11 blue, 12 red, 14 green; 2 red, 11 green, 2 blue +Game 85: 8 blue, 2 green, 1 red; 13 blue, 6 red; 3 blue, 5 green +Game 86: 16 red, 8 blue; 7 blue; 16 red, 16 blue, 1 green; 15 blue, 11 red; 2 green, 7 red, 5 blue +Game 87: 6 green, 9 blue, 4 red; 1 red, 1 green, 4 blue; 5 blue, 13 green, 3 red; 2 green, 4 red; 16 blue, 10 green, 3 red +Game 88: 1 blue, 14 red; 14 red, 3 blue, 8 green; 1 blue, 5 green +Game 89: 12 green, 14 blue, 3 red; 2 red, 3 blue, 3 green; 2 blue, 8 green; 1 red, 3 green, 15 blue; 3 red, 5 blue +Game 90: 3 blue, 17 red, 11 green; 2 red, 2 blue, 7 green; 7 blue; 8 blue, 4 green, 10 red; 1 blue, 4 red +Game 91: 10 red, 9 blue, 8 green; 5 blue, 10 red, 2 green; 11 red, 17 green, 7 blue; 12 blue, 16 red, 18 green; 20 green, 5 blue, 15 red +Game 92: 1 green, 14 red, 1 blue; 2 blue, 6 green; 9 red, 6 green; 5 blue, 5 red, 2 green; 3 blue, 3 green, 10 red; 5 blue, 1 red +Game 93: 10 green, 1 red, 6 blue; 16 red, 5 blue, 2 green; 3 red, 7 green, 11 blue; 12 green, 5 blue, 4 red; 8 green, 7 blue, 10 red; 1 red, 5 blue +Game 94: 3 blue, 1 red, 3 green; 1 blue, 4 green, 4 red; 9 green +Game 95: 3 green, 5 blue, 9 red; 2 green, 9 red, 2 blue; 12 red, 9 green; 11 green, 9 red, 9 blue; 9 blue, 6 green, 10 red; 13 red, 2 blue, 5 green +Game 96: 2 red, 19 blue, 2 green; 10 blue, 1 red, 2 green; 9 blue, 1 red; 2 green, 3 blue; 1 green, 1 red, 11 blue +Game 97: 6 green, 7 blue, 5 red; 7 green, 1 red, 11 blue; 6 green, 6 red, 5 blue; 2 red, 9 blue, 1 green +Game 98: 5 green, 8 red, 15 blue; 16 green, 9 blue, 8 red; 5 blue, 3 red, 2 green; 13 blue, 12 green, 4 red; 2 red, 15 green, 3 blue; 1 green, 11 blue, 2 red +Game 99: 1 green, 7 blue, 6 red; 16 blue, 9 red; 1 green, 17 red, 12 blue; 15 red, 7 blue; 8 blue, 14 red +Game 100: 5 blue, 11 red, 6 green; 11 red, 2 blue, 5 green; 6 blue, 6 green; 2 blue, 6 red, 15 green; 7 red, 4 blue, 7 green \ No newline at end of file diff --git a/inputs/2023/03.dat b/inputs/2023/03.dat new file mode 100644 index 0000000..2794787 --- /dev/null +++ b/inputs/2023/03.dat @@ -0,0 +1,140 @@ +.........426.............985.........40..........207............................841..463................................633........17.384... +531&......+..........125....-..312..........#........895......998..945.....@......$.....-...33...................353.....*........*......... +........................#......*...........21..727..*..../..-./.............545......80...................602......@..272.......743......... +...........558.577..........486...186*925.....*....483.883.1....286...................................625..................#474.....491..... +..............*.........243.................287................*............$....245............830.........793......#..........306..*...... +238.685.................*................#.........%........807.........28.947.................*.....705.....*....573...500*781...#..496.... +..................989..923.......713...539......917.................115..*.....-...........662.........-......413........................... +...........=......*..........886.*.........................442......*...........398........*.............%.............636...........%...... +............976.413...498..../...266........796....................87.....................969.881..&.....815...........*.....279....415..... +......728*..............*..............129..........670...890.....................760...=.......@.832........227.....632.212*............... +..........257.....712.491....-41...........970........*....*...373........742.......*....330....................*.....................814... +....................*..................415......406..441..35..../.........-..........828.........................239.....@...533*206........ +......687.........834......448...658...*..........&..................467*..................244.......+332....*..........35..............*... +.............453.......616..*...........609.............662......672.....56........661.602*...............549.661...................141..73. +.......699...*.........*...904..........................&..........*...@..............................189..........$677.......473.....*..... +........*..670.........938.........267.......684...........514...211....875.........667..171.110&.426*......../...............*........29... +.....164..........................*....@786.*..........646.=.........43.......885....+...=.............641.....996...........117....28...... +.........*921....150*....635..973............587...346*......771........&3....+....................=................................@....... +......962............821....*...*...........................$....174............391+......732*177...101.....146.............555............. +..........................117.965.........327.....................*../127.54.........354.....................*...37/.......&....56....656... +.335.747*967..*469.................................-.....$.450..560...........553...+.......327*..........215.........950..............-.... +......................253%...........796.........267...946..*........&...583.-...........-......727.37........@....#....-.......337......... +.............-...............-.649.........-.................316..680......*.....982..398..................961......632...718......*..%..... +..........599.............876......700..617....344*138...611..........907........-...........................................*...291...209.. +.860...........................*......*......................850........*..............=....761...721*804...............%...33.............. +...*...........................61./....378........268....956..#..813@..191...610.168..216....$...............853%......826.................. +.757..=422.........................427..........+....%....=...................#.../..............908................@....................... +.........................172.................464...........................-.....................*.......667...931...131..@.........939..... +............456.....462....*.....985................801......933..464..641.874............*189..42.........................430..596...=..... +..............*....%........945.@........456....*23...........*..........*.............335.........889..557#....................*........... +....810.........65......382................#.532...............704......796...192....................@..........46...527......929........... +...=....%..................*433...........................925.............................................30.....*................617....... +.....792.......386.....................575...%859................................................................993...334*..........&...... +..........657.&.....&....................*.....................296.+513.............36..........267........703.............186.............. +......336...........443...#.....474......897.215*346.....100.....=...........+.812../......47.%....*444..&............128........-...196.... +705.............980......932.......*122..................*...........305..817..*......424.../.40.........193.210.736.*..../....&.512..*..... +...%...............*.....................................326..615.......*.......472..*...........350*201.......*..@....681...902......330... +...................907...303...........140*112.............../........93...875......339....361=.............730............................. +..............540...........*...................498.170.....................*....................#...757........241...............201....... +...359*42.....=.......309...561....528.....444.....*........570............................125/.379......707.......*........*285.$.......... +............%.........................*770.............253..*....515..926..................................=........45.946..............*... +....155..573..103.24..............................@......*...179..*........275......................*...................*................134 +....*............*......963...........444......801...656.796.....524.84#......*433.......997.....122.500....711.......447................... +..80.........992..........*............*...+..........*....................................*.................*...............$.....894...61. +........183..../.......492..955....+.222....519........373....=......304........151.........691..............655......223....37......*...... +.........$...................&..221................859.....929.......*...398.......*......-......591.....&.............$..........134....... +................960......264........./..............#..............508...@........118..449........*...907......=791......................... +...........239....#.....=...........248.531...................@..................................696.......741...................50..174.... +.....=......*............................*.....506*809.....796.....906.....=...........17*...........51...*.......................*..*...... +...520...198...781....253..............957.222.....................*.....216..............513....959*....638.312........172.318......514.... +...............*.........*239...............*.....%.....923.........852..............414+............../.....%...104.......*.............936 +.....221.....116.....712...........201...346...475.........*...............&..............745....109..202...........*....................... +....*............957*.....$....353...............................171....468....%..........*.........*.........906..593..592#......&316...... +.........232...........251....#.......%.......................$...*...........179..904.....365.....331..541..*.............................. +...................................856..........412..-....844.877..871....*.........../.................*....416...........810*685..776.969. +.158.......@......319........681..........780.#...+...428.*............650.241....@....................................123.............*.... +....%....826......@....%.688*.......983../....723.........892...................270.....234....*......443...970...........*................. +....................314................*.................................................*..=...588......*.....%........225...496*732....... +...344+........................644......413.997....553...................................87.282..........943........866..................... +..........*563....910......267..*..546........*.....*..................60.............+..........421*739.............*...251.169.605........ +938.....52...........*761.*....762............335....842.....................44/.......528..........................77......*.......*201.... +..........................597......$.....................896.....543.76.........................938./707...............8........982......... +...894..195.......310*986.....=54.854...553................#.......*...*..192...127..566*768..........................*....850...*..970..... +.....*..................................=...835...874...........663...65..*.....*.................*947..539.12...947.485.....*..749..*...... +......34.378........$............#.........*......*......922...............947.598..880........723.....*....*...@..........791........18.... +..165.............388..94.......863........132.184..973.*.......58.................*......226..............618.....................=........ +.....*.............................................@.....154.............240..34.297.......*...........429.....625...............672........ +......619...#............641*520.340.918............................../..@...............390......502..-..../.*.....164....789........984... +.............933.....................*.....838..240..400&..........288.......196..109............*.......749...513........*.......751...*... +.....709.....................881..905.........*....*.....................643..*.....@...114...608......................190..........*....993 +...............109...........*........368..123....98...501.....691..410-...*.126......................92........+..546...........219........ +..................*......18..70..296.....*..............&..987..*........235............8.............././...828...*........................ +.151.............551.153*..........*.....883...............*.......*833........497..287*..427.377%.428...910......448.598.....334..53..619.. +..........589.......................723.........832.131..705.............................#............*.................@......*...*..*..... +..........*........794*686......790...............*..........192..............................970......612.546.98............942......941... +....223.686..............................547...665.......396..*.....210......408.322..839.......*..557......*...+.................521....... +.....*.......170...........166.....390..............100.....*..921....*.........*.....+........984....*..450..........639..../....*...296... +...372..........*760...266.*...600*......999.........*...906........................#....632.......469........250.......*...422..643....@... +..............-........#...911......494...*...355...159.......................848..676.................../.....*......35.................... +......81$.....544..67...............*.....159....*............209.747*29........./..........812.........430.232...................199*587... +760.................*...#........331.................%...158...................#.....................29.................596...477........... +..........%./....922...388..970...............510...68......*....590....545...621...-..977.593..889...*.........................=..879..*389 +....163.618.370..............................*...............946..................332....*.......&..&..837.658......................*....... +.............................835.....129...566.....690.237..............#.............$.....386....36......#......411.....52..733...783..... +.........670...978.84...........=......*.......991*....*....632.......957...52.......548.....&....................*.........-.*............. +....920....*..*.....*...............949..............482...*......812........-...413.....201................663.286.....-......424...296*630 +........992...307...634.................716..287.........811.....+........4......*...413*.........896......*...........84.52................ +.........................253.............................................*.....459..........926..*.......446..............$.......175....... +.........................*.......168-.....781*......344.........85......373..........224.....*..393.545........749%.643......-..%.....968... +...*776../145...&.....140..........................*........578*........................#..45..........*............/......596..639......... +415............393..................988...........878.22..............909..........284...............173...564*48.......33.............444.. +........259..........%.....207-........*631...........*......669*...................*...........282......%........%.....*................... +.130................119.....................422......440.........461...-154........575.............$.=....329...180..576.....367............ +...........618...............=.../..538$.......&............493*............729..........903.........82.......................*............. +.............*............541..124.........627........806*......666.703.146*...........*.%..............-.....................142........551 +...#..3......660.....................*........*.......................*......./164...498..............872.621....991........................ +174....*...............683..542*.....960.....782.....755............557../.....................#282.......#.........*409.103.......943...... +........231.891...........*.....782.....................*992.............492......69.......610...............+...............557......*..... +............*...964.104.289..........853......691..830.......&.....................*...870.*.............77..189.310*...............583..... +....449....435.*....../........732+.=.........*...*.........238...161.....688......675..*...934......................891.................... +...............21.......................239........430..........@....*.....@..376.......205......790........................73..334...598... +......863-................474...339.....*.................765.534.116...........*..................*..........@.......513...-....%...../.... +.262..........#......785....*..$....915..622....440$.&416.*.............143...34..45....515#....448...........268........*.................. +...*..+.......844......*.142..................*...........666.......266...*......*...................236..............439......338.496...285 +647...393...........236.......218..........819.779...+................./.........765...................*.......292.........$......*......... +..........................257....*.................274.........247...........951........................121........391....817.../........... +........742..................&....98...................628....*.................%.168..........539............................701........... +.......................659................................*.622...868.............=...713.357....*.298....917...781......................... +.....467....382..899......*819.....952*388..............684.......*.....................*.....558...%....%...............$..*.....60..615... +.....*.....*.......*............-..........604.................85.76....%893.866.&...784.....................$423.....334....935..*....*.... +..154....424......583.......8....926...$............$441.....................*...50...............=....155.......................599..115... +.............%............-...........96.506..846.................152.....985..........589.......384...@...44...............560............. +.............161...%167..906..901.........*......&....92..+610.......*247.............*...................*...........330..*....92.......... +....26.........................*...........523........*......................190...711.......*..........302.690.........*.986........714@... +........154.....................763..59..............305..560...726......79...*...........521.160..159................81.................... +991.339*........-.........434..........*....................-..*.........*..626....................*..............692......+................ +..............448.....96./...........782............353........949.....655...............752.522....905...964#......-.683..83............... +.......=..........127../.........$....................../.......................................*......................+.........671........ +.783..14...........*...........746....271.38............666..................513..37.....=984.824....@....$..463.................*...154.... +.................60..892..304............*....354*20.................99.........*..%.351............367..914.*....622...........310...*..194 +.../.....339............*......318..........6.................329*...*..240.....76...*...45....*..............601......+.............211.... +.700...../...925......616...........*56.570.$...970...751...........556..%..958.....50..*...667........63...........793..................... +...............................8.........*........*......*854................*.........304........324.....%..................*.....213%..... +832...............%....$.........572......303.....872.=.............822.....2...434........%..76.@......34...866.684*.......571..........756 +.....922........908.811......792....#.967..............432..............304......+........676......314........*..................364....#... +........................=.....*.........*.......39............127.........*........27..............+.........937.172.....532*......&........ +....*.............156....626...667......151..../.......................776..846...*............562.....254$......../..@......297.......751.. +..457.213.....403*....=......................#.......656.....546%..............*.......*866......+...................954.576...........%.... +.........*..........227........364....752..977.231..*...........................739.610...................................*...730..#........ +......838......645........$692.................*....170...............906........................149.....578..470.........981.....310....... +959...........*....447.................33.513...412..........784.......*....................365.....%....*.................................. +...../......593......*....=..965..=907...*.............................482.....................*.......915..............327...529.....425... +......613.........%.490..971.-..............&542..............................695.......803.....917........446.....53...*........*455..$.... +...............258..................+..303+..........................517....7*....598..@....472.....224...*............903..#............... +........................724...+....575........312...&.........................................*....*......628........@.....108.............. +.....343.374.......$....*....675...............%...371......409.....502.928.135...482.384....195...59.............144..982........787....... +....*....*.......289..729..........990....................../.........+.......*..*......*...............*.@...........#.............+....... +....147...613.............*534.........938....882...740.518.....994..........800.222..933...836.......260..339.=...........628.$935...../... +...............726.....308.............%........*...../.+........=..../146.................*...................509..........*........593.... +930.........................823..............994.................................100.....857.......................708.220.184.............. \ No newline at end of file diff --git a/inputs/2023/04.dat b/inputs/2023/04.dat new file mode 100644 index 0000000..273bb78 --- /dev/null +++ b/inputs/2023/04.dat @@ -0,0 +1,202 @@ +Card 1: 34 50 18 44 19 35 47 62 65 26 | 63 6 27 15 60 9 98 3 61 89 31 43 80 37 54 49 92 55 8 7 10 16 52 33 45 +Card 2: 90 12 98 56 22 99 73 46 1 28 | 52 77 32 8 81 41 53 22 28 46 48 27 98 1 94 12 99 72 84 90 92 73 24 63 56 +Card 3: 48 10 39 87 23 78 49 40 55 8 | 48 80 78 87 39 24 27 19 41 73 30 52 10 2 67 40 88 53 59 84 55 49 5 33 82 +Card 4: 21 45 91 26 64 51 42 84 11 94 | 55 56 36 65 84 2 68 44 52 58 86 6 33 7 97 40 30 14 39 80 82 57 79 1 10 +Card 5: 33 6 67 89 64 31 85 11 2 15 | 6 70 29 89 12 11 64 80 7 82 46 16 33 68 48 72 31 2 99 15 67 57 4 49 85 +Card 6: 51 20 11 66 38 39 69 48 25 74 | 39 74 3 86 19 25 21 55 2 38 46 60 66 82 51 11 98 88 8 48 49 94 20 69 72 +Card 7: 4 50 82 51 52 77 12 11 57 42 | 56 11 73 69 42 82 32 77 52 98 12 51 36 94 46 4 50 39 85 90 93 70 18 71 57 +Card 8: 96 31 27 93 7 8 6 23 15 72 | 55 79 86 4 6 35 12 27 95 29 73 81 87 43 7 13 62 15 72 71 58 48 63 94 89 +Card 9: 16 90 79 29 93 31 40 24 82 88 | 86 16 73 20 22 93 83 39 36 90 79 72 40 29 35 97 88 12 8 24 31 82 21 59 95 +Card 10: 17 36 50 39 96 43 41 38 55 8 | 39 93 38 96 56 27 4 72 17 87 99 78 75 11 55 41 43 68 64 28 50 40 8 36 97 +Card 11: 76 96 78 64 80 28 11 24 93 97 | 66 34 64 35 97 47 54 13 79 11 67 24 36 28 17 30 82 93 21 49 4 86 76 12 8 +Card 12: 16 73 39 24 54 90 89 55 11 25 | 17 92 1 61 86 2 25 7 50 55 88 74 64 83 24 48 39 84 54 32 58 34 89 28 99 +Card 13: 66 99 94 51 17 67 73 32 76 86 | 97 61 50 64 57 41 39 89 60 13 43 72 44 83 84 18 87 20 92 48 75 8 82 36 53 +Card 14: 3 56 26 47 68 66 22 20 27 77 | 75 22 63 26 55 66 3 73 47 90 44 64 76 4 92 19 91 62 51 77 58 17 2 40 52 +Card 15: 91 1 44 6 51 43 61 5 12 31 | 49 97 10 78 87 95 36 56 96 46 4 14 43 54 94 81 41 67 91 11 83 38 93 22 86 +Card 16: 61 46 35 13 79 38 80 3 95 87 | 80 98 46 74 28 26 84 73 75 57 52 91 40 44 2 51 95 77 3 96 35 67 41 55 79 +Card 17: 50 89 17 18 60 81 37 29 3 52 | 13 19 83 98 77 25 97 52 10 35 94 99 50 6 27 84 41 11 33 34 20 4 54 89 56 +Card 18: 57 1 68 3 86 40 15 2 38 41 | 88 96 18 25 16 15 12 47 37 27 39 48 32 43 33 82 60 13 57 53 40 61 26 99 5 +Card 19: 30 48 3 82 23 91 41 63 99 16 | 78 6 46 54 22 85 7 49 59 53 68 12 70 97 77 92 56 41 83 5 75 37 58 61 28 +Card 20: 28 5 15 55 66 24 25 93 6 22 | 94 68 4 2 98 37 76 71 78 21 47 67 97 51 99 3 57 89 95 30 26 60 12 9 11 +Card 21: 90 98 42 76 23 83 8 29 5 50 | 93 13 90 19 25 61 97 39 99 73 40 38 6 72 65 43 91 20 33 86 55 62 47 1 84 +Card 22: 14 49 50 4 1 13 65 30 10 51 | 26 40 32 73 16 93 94 22 59 76 89 27 33 44 87 42 74 3 71 47 67 6 12 43 57 +Card 23: 29 57 10 79 78 30 86 69 32 72 | 26 8 96 78 51 90 86 19 3 10 57 29 22 72 35 28 97 34 69 38 79 33 93 32 30 +Card 24: 99 66 67 60 23 90 73 1 29 77 | 79 80 74 63 27 68 12 81 19 91 28 56 71 38 24 35 18 4 87 13 62 3 34 44 14 +Card 25: 87 8 39 28 6 89 34 17 51 25 | 50 37 16 36 90 60 28 17 84 70 32 22 64 61 6 34 24 56 99 89 40 77 47 68 87 +Card 26: 42 82 14 23 59 8 62 53 37 2 | 62 8 14 85 76 53 21 60 79 1 90 19 78 82 42 17 11 49 87 13 59 37 81 2 23 +Card 27: 75 95 56 30 17 58 61 11 39 93 | 68 73 94 9 11 86 80 22 61 50 75 62 36 98 17 39 89 93 34 56 30 78 95 58 96 +Card 28: 10 54 26 76 5 35 81 67 34 28 | 28 88 89 93 76 35 81 94 26 98 10 84 67 5 65 50 57 34 54 82 4 45 62 24 53 +Card 29: 6 40 97 56 4 43 98 55 79 72 | 79 15 43 54 97 4 95 42 40 57 82 91 87 86 68 63 19 1 22 72 7 67 10 84 55 +Card 30: 22 85 5 42 74 28 1 63 29 53 | 63 86 80 48 13 2 74 85 25 97 5 43 21 53 88 7 38 29 82 3 30 77 51 11 44 +Card 31: 11 69 64 47 44 13 50 33 83 53 | 59 9 57 81 98 69 32 40 11 33 53 20 52 12 37 93 79 64 74 80 71 35 44 7 13 +Card 32: 94 44 62 75 35 86 34 20 1 74 | 17 29 50 65 60 57 33 59 31 92 70 11 54 85 99 22 46 53 98 93 97 51 67 64 12 +Card 33: 90 55 21 9 10 41 24 51 88 70 | 30 77 78 20 32 1 57 92 15 75 21 37 31 43 60 39 72 54 46 99 53 61 50 33 94 +Card 34: 8 77 92 34 84 28 90 40 97 75 | 61 40 99 77 17 28 80 50 37 47 22 70 81 79 97 85 93 15 49 48 69 14 2 12 94 +Card 35: 44 61 20 43 35 24 45 53 52 47 | 46 54 93 78 87 31 30 80 23 51 13 99 60 57 38 9 1 19 90 71 70 26 40 97 62 +Card 36: 64 40 1 89 19 70 16 71 31 94 | 10 89 43 1 63 77 3 74 62 17 38 54 72 41 50 14 35 59 99 34 52 55 22 44 96 +Card 37: 74 56 86 52 37 58 30 55 79 9 | 49 28 37 12 97 61 19 36 90 45 48 21 86 58 96 82 9 87 66 44 35 77 81 70 22 +Card 38: 34 46 73 59 45 65 85 27 16 42 | 17 93 58 98 88 64 26 35 2 84 86 80 89 4 48 83 28 50 32 21 74 69 95 40 57 +Card 39: 51 82 59 67 24 8 32 23 96 40 | 76 40 59 83 65 24 4 29 88 21 82 68 95 64 10 1 62 37 81 32 74 47 56 63 48 +Card 40: 80 57 26 4 27 39 34 24 49 78 | 65 64 86 59 25 16 92 66 13 54 46 91 29 47 32 21 81 14 30 7 62 37 55 41 36 +Card 41: 12 70 15 72 82 43 53 21 58 51 | 7 56 3 30 36 45 28 94 67 89 39 2 48 47 24 29 16 20 22 18 41 37 49 93 77 +Card 42: 60 85 83 5 82 63 48 36 4 40 | 89 43 57 86 31 45 88 37 90 3 46 94 29 12 25 40 38 50 72 5 9 15 49 16 87 +Card 43: 33 94 66 90 14 72 73 59 55 15 | 87 34 37 35 4 77 25 80 54 10 86 6 12 48 60 61 36 55 43 64 97 30 41 5 95 +Card 44: 31 17 65 48 36 63 33 46 25 87 | 9 70 4 42 53 97 57 32 80 14 95 23 3 12 15 52 6 34 71 74 39 27 66 22 20 +Card 45: 88 52 86 36 5 15 65 61 18 17 | 36 96 32 56 1 80 48 89 95 97 60 91 85 21 82 10 3 75 66 93 51 37 28 23 83 +Card 46: 23 86 32 98 41 65 17 89 69 39 | 69 4 80 41 89 43 86 44 16 40 99 8 77 32 39 51 19 36 73 56 90 83 5 17 76 +Card 47: 80 15 87 14 9 27 40 44 60 8 | 33 27 15 67 34 8 14 58 37 80 40 73 38 87 84 55 94 60 9 35 42 46 4 79 44 +Card 48: 94 32 34 99 60 33 11 3 30 96 | 72 27 32 33 56 11 97 61 94 96 26 93 30 41 83 17 3 60 34 2 47 99 40 24 90 +Card 49: 53 60 74 44 36 88 64 45 8 34 | 89 84 68 79 30 67 75 76 21 53 26 72 51 85 18 44 7 25 60 74 64 17 37 88 86 +Card 50: 90 69 91 1 43 26 77 19 61 65 | 65 34 92 13 48 46 69 19 44 77 99 11 63 91 76 61 73 53 1 81 23 12 40 26 43 +Card 51: 22 94 42 24 28 37 61 88 86 12 | 5 31 3 34 56 82 70 68 39 91 53 22 16 81 71 54 99 41 44 90 24 37 12 27 61 +Card 52: 93 57 50 9 14 42 66 23 21 1 | 21 33 48 18 71 1 27 54 11 77 74 22 92 41 34 14 98 36 61 70 89 80 82 10 55 +Card 53: 21 12 1 93 98 69 91 8 4 89 | 80 7 1 68 92 32 83 21 76 20 63 33 28 73 43 12 56 5 15 40 89 52 16 22 9 +Card 54: 22 52 94 9 63 10 16 1 82 4 | 43 47 48 81 24 35 9 16 94 44 85 18 13 64 49 82 52 77 10 21 41 12 74 79 39 +Card 55: 71 92 42 84 19 43 13 54 1 88 | 73 23 32 18 52 38 35 81 45 96 92 15 57 19 55 43 51 12 7 88 62 69 71 5 53 +Card 56: 13 52 23 69 26 92 37 47 99 54 | 38 64 66 22 26 99 93 23 86 9 29 98 57 48 51 79 50 42 90 60 87 13 25 5 4 +Card 57: 62 8 38 58 6 99 10 14 72 94 | 29 56 27 53 61 77 95 39 24 46 19 40 30 31 9 93 78 91 79 25 20 4 12 67 87 +Card 58: 34 57 49 6 78 13 53 81 75 98 | 41 58 21 56 64 7 97 11 80 4 83 12 44 51 62 26 5 22 46 45 27 95 10 16 43 +Card 59: 86 27 78 51 67 90 10 44 85 87 | 13 66 32 54 65 92 91 55 53 47 5 11 64 49 18 10 8 16 23 9 12 29 50 70 61 +Card 60: 26 62 95 72 31 98 50 9 25 44 | 56 94 2 53 11 51 22 66 12 45 36 17 37 14 78 48 4 29 64 76 39 65 1 15 24 +Card 61: 47 54 93 76 68 98 64 15 53 22 | 70 19 86 7 44 45 5 39 30 38 6 83 33 15 3 51 49 29 98 37 56 21 78 60 90 +Card 62: 46 53 15 99 29 7 10 34 79 12 | 46 56 94 40 66 26 33 99 39 28 12 67 53 74 11 22 92 34 29 79 7 32 98 15 10 +Card 63: 44 3 92 7 24 33 23 31 10 12 | 23 1 96 92 72 33 86 4 80 68 25 12 40 45 17 29 94 36 81 44 61 83 10 24 19 +Card 64: 21 95 89 20 7 16 23 73 58 86 | 84 47 11 18 96 90 73 2 38 51 29 30 58 99 76 86 21 1 37 68 16 32 39 22 35 +Card 65: 15 42 28 50 91 52 73 79 70 45 | 98 70 45 19 4 46 86 11 68 96 41 58 39 7 64 15 50 89 28 72 47 17 40 27 79 +Card 66: 91 48 16 1 24 3 75 60 41 86 | 98 52 55 23 66 14 92 50 74 75 3 1 58 91 13 97 90 73 78 62 48 79 65 77 87 +Card 67: 74 29 43 82 93 73 58 98 3 8 | 32 63 13 60 49 73 18 74 65 78 97 92 29 23 43 5 72 35 48 99 3 15 93 52 64 +Card 68: 35 33 72 82 59 8 27 67 19 31 | 35 36 80 7 63 62 33 44 55 31 8 75 1 64 95 27 47 79 40 14 72 19 42 69 91 +Card 69: 96 20 45 65 51 91 49 30 79 78 | 58 73 89 36 32 69 81 37 20 60 42 76 29 25 75 65 30 86 19 26 66 34 31 99 8 +Card 70: 13 59 90 5 63 29 14 32 77 53 | 56 66 32 77 16 85 47 73 55 86 1 90 69 97 4 78 76 59 49 8 48 37 63 50 72 +Card 71: 9 31 29 5 50 37 71 94 78 53 | 28 80 53 55 39 58 42 86 57 81 83 64 95 43 69 51 65 20 75 13 30 70 50 63 5 +Card 72: 86 87 49 67 68 46 45 60 23 12 | 35 93 94 6 55 49 40 28 38 62 63 32 52 36 69 17 81 73 16 7 56 89 21 20 86 +Card 73: 80 81 75 68 33 79 94 53 8 25 | 9 47 95 99 85 48 62 17 44 77 31 12 1 70 86 34 75 83 68 87 88 96 78 4 18 +Card 74: 62 64 51 12 54 2 85 81 22 28 | 98 14 10 71 2 61 29 82 39 55 17 76 31 18 86 97 60 87 93 26 69 33 21 13 6 +Card 75: 96 50 88 5 16 85 7 27 51 58 | 94 80 41 53 93 20 83 45 61 40 72 95 97 39 26 32 91 70 99 3 48 62 64 79 86 +Card 76: 1 73 41 87 54 57 20 7 98 85 | 21 16 15 66 23 75 86 46 11 90 36 96 34 78 58 33 88 56 93 74 8 64 30 28 5 +Card 77: 91 50 88 4 58 31 20 6 24 44 | 10 61 50 55 62 47 75 78 80 88 93 4 41 59 95 91 58 31 24 70 22 20 6 12 44 +Card 78: 22 28 36 88 75 82 4 99 90 55 | 14 33 24 75 43 4 41 88 16 15 77 36 99 22 52 82 61 55 28 27 89 97 51 32 90 +Card 79: 96 3 13 91 24 65 77 1 44 43 | 13 43 24 56 6 3 77 65 61 5 41 73 44 60 21 96 74 72 19 16 1 52 37 91 46 +Card 80: 71 29 61 75 72 55 16 26 6 62 | 15 65 38 71 16 10 75 50 6 92 4 26 79 29 94 46 62 63 45 61 51 86 74 55 72 +Card 81: 34 57 14 90 99 97 44 31 73 64 | 38 47 54 86 50 4 46 48 14 43 16 15 82 27 51 8 33 59 17 55 84 57 44 19 12 +Card 82: 77 46 25 67 61 5 37 49 50 24 | 77 89 5 4 61 43 50 76 55 78 46 6 42 66 25 52 49 7 85 95 37 24 48 23 67 +Card 83: 66 30 35 68 10 67 18 14 52 59 | 6 37 16 61 95 66 91 54 79 50 97 21 2 33 74 29 80 77 1 59 41 31 10 13 9 +Card 84: 29 39 48 7 2 90 47 93 88 46 | 57 90 50 84 74 52 7 27 93 96 54 78 48 39 29 46 40 88 47 13 2 89 70 25 86 +Card 85: 91 93 84 76 7 1 96 60 98 67 | 98 88 10 21 91 27 93 44 1 67 79 7 58 87 47 30 76 96 20 60 2 84 41 73 54 +Card 86: 73 1 14 37 79 63 97 75 2 60 | 80 3 56 45 43 23 1 95 72 13 49 27 9 78 55 15 74 40 75 94 86 63 76 32 52 +Card 87: 76 35 41 4 25 97 62 99 77 98 | 93 35 81 77 37 76 88 98 53 38 4 48 25 23 84 97 2 49 46 99 42 1 41 95 62 +Card 88: 3 15 12 58 57 4 43 44 10 55 | 78 55 51 54 4 44 42 35 69 3 79 25 57 10 77 34 30 38 12 58 43 93 14 86 15 +Card 89: 4 99 45 58 49 30 59 21 25 13 | 73 43 99 85 74 13 30 58 45 31 21 52 25 49 29 4 6 62 19 92 39 16 18 89 59 +Card 90: 81 84 6 57 1 69 3 68 13 49 | 20 25 40 92 84 38 83 53 94 66 49 52 17 72 56 8 33 43 22 81 64 47 28 36 5 +Card 91: 68 97 58 96 34 66 61 81 56 90 | 25 28 51 34 59 40 64 96 97 48 30 90 63 37 89 74 16 87 81 5 1 54 66 57 62 +Card 92: 10 53 16 70 72 21 34 4 65 54 | 98 21 63 53 55 75 72 93 7 24 15 25 92 61 67 86 70 10 12 34 65 54 3 5 36 +Card 93: 77 45 87 88 72 16 51 26 99 23 | 42 36 65 78 52 92 2 44 9 83 58 37 20 99 57 94 3 66 22 93 86 43 1 17 75 +Card 94: 86 29 2 71 17 60 43 8 11 81 | 92 35 45 12 38 47 22 9 13 11 48 58 63 68 20 96 46 94 85 42 66 25 83 26 57 +Card 95: 41 71 40 45 4 50 15 94 69 75 | 99 37 47 74 95 19 5 54 20 36 63 23 4 38 28 44 3 83 80 67 93 49 84 6 40 +Card 96: 16 14 18 42 90 63 96 37 41 76 | 52 22 37 10 25 99 76 73 93 89 1 79 23 85 6 64 16 97 39 55 96 18 77 69 92 +Card 97: 32 69 95 78 91 75 76 45 43 79 | 8 89 34 49 55 71 3 23 83 2 61 68 31 35 46 87 42 13 45 18 25 47 28 39 86 +Card 98: 24 37 74 59 60 94 39 40 63 45 | 23 52 8 85 53 70 18 11 46 30 6 83 90 26 24 34 55 71 82 97 37 31 38 68 5 +Card 99: 98 5 72 42 44 82 65 57 81 54 | 61 95 32 6 37 43 33 35 49 85 10 17 52 71 68 20 83 58 77 36 69 50 96 38 23 +Card 100: 27 84 51 44 31 19 34 98 77 18 | 44 43 39 5 30 48 74 88 23 22 6 35 59 2 20 92 79 89 72 58 80 11 52 10 57 +Card 101: 82 38 31 7 27 6 19 20 3 94 | 75 77 95 65 69 15 52 16 34 32 66 9 28 12 22 73 44 61 70 30 88 72 71 45 18 +Card 102: 16 59 11 8 88 9 48 1 68 90 | 44 12 18 99 73 27 91 82 29 20 63 1 84 57 87 86 3 54 42 85 78 98 51 60 36 +Card 103: 84 77 29 61 67 60 23 89 19 87 | 48 1 84 7 87 15 32 81 25 67 38 29 23 45 9 89 61 88 55 19 50 58 3 56 64 +Card 104: 51 4 13 59 15 92 17 65 26 84 | 3 29 85 4 58 66 51 31 2 55 65 54 13 16 24 92 38 26 59 90 67 99 71 33 70 +Card 105: 55 58 37 46 12 74 62 16 47 26 | 16 64 46 68 47 56 72 73 4 66 80 58 35 12 55 37 74 62 26 60 69 75 13 63 33 +Card 106: 39 80 37 10 26 47 66 79 12 64 | 34 82 72 10 12 20 40 7 39 25 89 9 26 93 5 1 47 64 79 96 66 18 80 37 13 +Card 107: 95 28 45 60 91 73 11 23 26 94 | 16 26 8 58 83 90 31 44 80 50 30 11 97 70 89 37 60 38 41 69 55 99 28 65 45 +Card 108: 39 54 74 12 56 63 13 34 32 40 | 88 70 89 74 87 96 44 58 2 79 34 37 63 16 30 61 41 23 54 95 33 72 73 40 82 +Card 109: 98 96 81 13 69 5 73 50 76 47 | 20 49 30 80 76 50 31 81 66 74 3 86 12 73 5 64 47 34 15 9 25 13 24 96 79 +Card 110: 47 43 1 83 76 38 30 45 50 12 | 56 99 38 43 74 68 27 83 55 49 48 78 91 41 51 72 33 76 15 12 22 50 53 26 13 +Card 111: 51 68 7 71 30 79 14 26 59 66 | 11 16 79 30 26 7 27 18 53 45 68 76 15 87 77 92 57 62 71 14 10 59 66 78 91 +Card 112: 84 37 54 21 19 30 38 20 94 88 | 40 19 38 21 68 62 48 26 44 12 91 74 20 30 42 89 98 51 7 54 37 58 1 88 64 +Card 113: 91 41 56 30 18 47 74 45 17 9 | 87 77 68 93 88 56 2 1 69 41 36 9 47 33 13 44 18 25 70 86 45 8 32 91 46 +Card 114: 83 62 7 35 48 11 37 69 93 84 | 90 24 81 74 17 54 49 65 67 19 55 47 43 14 64 99 33 28 29 98 36 63 57 52 58 +Card 115: 44 84 39 20 33 59 31 34 8 95 | 31 81 39 7 16 92 35 53 11 97 59 78 10 80 91 62 54 29 65 3 75 47 26 24 63 +Card 116: 65 74 70 33 44 56 13 10 85 63 | 11 20 54 17 73 41 24 79 18 92 43 76 88 39 95 80 7 75 36 52 94 35 78 31 4 +Card 117: 34 82 96 60 48 66 6 37 14 98 | 89 64 6 95 11 54 66 17 45 10 83 98 63 15 1 55 52 68 60 94 79 22 85 57 39 +Card 118: 20 80 46 41 97 57 99 56 64 91 | 48 61 98 11 95 50 62 81 10 79 22 32 37 71 43 19 36 58 29 9 16 64 65 17 96 +Card 119: 96 42 71 23 45 73 84 94 51 77 | 68 35 22 56 81 54 47 3 77 50 73 51 90 29 82 4 52 8 66 76 15 92 65 24 14 +Card 120: 56 34 70 85 68 77 79 94 84 73 | 1 82 60 23 78 10 58 29 26 70 93 2 88 87 4 33 44 69 47 12 48 6 54 41 96 +Card 121: 60 85 78 83 68 26 62 65 91 69 | 97 63 12 4 9 46 5 10 52 99 24 74 40 95 35 79 23 39 45 17 38 85 59 69 89 +Card 122: 48 51 12 57 61 41 98 22 11 37 | 27 24 95 81 20 73 92 31 32 68 6 63 38 40 83 56 96 62 99 7 30 11 85 75 46 +Card 123: 47 62 78 39 69 77 2 43 83 36 | 28 89 49 13 40 70 22 16 23 19 57 61 14 51 44 53 91 50 64 66 33 18 8 15 79 +Card 124: 22 28 12 21 40 57 84 5 87 46 | 67 46 31 64 58 22 76 75 37 82 70 21 87 69 13 3 12 5 84 28 14 57 95 61 40 +Card 125: 54 74 63 95 39 93 11 81 24 69 | 39 67 71 19 81 84 53 66 51 74 40 63 17 49 95 3 44 11 9 72 91 24 54 56 86 +Card 126: 49 98 17 94 19 37 69 1 40 20 | 19 90 77 21 94 96 98 34 49 15 28 76 71 22 83 37 1 69 53 12 31 40 17 42 20 +Card 127: 97 45 16 74 87 96 76 60 29 3 | 87 2 45 66 29 17 72 22 15 74 54 38 3 37 60 76 97 62 49 96 61 51 5 16 25 +Card 128: 19 79 62 95 67 59 77 5 70 98 | 56 70 21 85 18 68 88 98 79 95 5 83 16 77 91 63 90 19 84 76 37 59 62 67 44 +Card 129: 94 73 69 51 30 98 1 65 11 45 | 71 5 44 7 52 79 61 99 11 25 10 8 78 33 57 51 75 20 77 9 6 91 4 46 12 +Card 130: 26 98 8 44 84 7 29 47 70 24 | 13 54 48 6 45 78 83 28 10 2 29 71 16 44 62 89 24 53 46 67 20 43 84 91 88 +Card 131: 41 27 22 4 39 82 84 68 29 85 | 22 85 16 24 44 25 41 46 23 39 88 9 82 51 90 64 13 80 74 15 4 78 91 94 93 +Card 132: 32 46 49 99 77 63 37 18 54 80 | 59 65 42 55 47 18 6 32 9 37 85 52 30 94 72 13 77 97 22 46 26 99 90 92 17 +Card 133: 70 72 53 32 24 71 17 27 39 67 | 9 87 57 49 90 81 40 28 37 8 67 51 18 65 99 16 3 31 73 12 91 44 55 70 60 +Card 134: 10 65 66 5 88 67 83 75 52 33 | 90 37 65 2 52 69 34 4 45 72 15 1 44 96 94 36 35 76 5 56 63 79 20 12 75 +Card 135: 71 54 43 41 34 29 16 88 77 44 | 9 33 48 82 52 74 28 10 22 42 15 47 27 5 7 23 56 55 94 49 63 72 61 78 46 +Card 136: 10 97 3 82 73 87 95 80 35 63 | 20 63 50 79 52 77 2 38 84 83 59 74 51 26 5 46 9 49 19 8 13 36 15 7 23 +Card 137: 97 53 91 22 90 12 93 23 3 86 | 96 82 24 21 30 51 65 44 50 31 71 34 54 38 36 88 94 48 32 83 99 84 74 27 33 +Card 138: 8 97 59 46 75 32 65 82 40 44 | 5 81 19 36 54 2 14 39 20 76 3 68 46 50 47 15 96 89 95 41 37 22 99 40 58 +Card 139: 66 97 45 10 72 63 29 43 84 9 | 61 3 74 56 58 4 15 6 68 55 20 23 80 47 83 44 91 19 31 50 54 73 93 45 53 +Card 140: 1 9 81 51 8 90 35 61 82 27 | 55 49 88 60 7 93 46 96 70 75 18 37 41 52 36 78 77 80 5 31 76 79 65 99 20 +Card 141: 93 8 76 47 31 92 18 23 29 34 | 95 67 73 27 9 98 85 70 96 36 87 89 52 63 65 78 37 24 3 90 2 97 19 93 51 +Card 142: 34 71 94 2 79 18 69 89 44 19 | 3 10 9 62 71 44 37 32 97 85 2 89 48 6 14 95 17 91 5 99 11 33 41 39 22 +Card 143: 1 91 47 65 14 42 96 12 52 6 | 70 47 45 3 2 54 52 42 65 25 16 38 91 57 72 96 90 36 34 14 79 78 1 39 76 +Card 144: 32 9 19 63 16 5 81 1 2 49 | 90 19 52 28 23 75 34 57 70 81 1 36 26 2 32 27 63 43 16 4 49 99 9 21 5 +Card 145: 11 45 95 1 92 20 34 49 70 28 | 66 27 57 51 23 24 81 69 56 80 55 89 1 47 95 32 7 5 14 92 99 73 20 84 65 +Card 146: 29 84 70 31 61 77 47 89 96 63 | 32 96 52 23 73 79 47 66 67 46 31 26 8 82 15 29 89 84 77 72 11 1 63 97 27 +Card 147: 90 51 66 50 32 47 39 20 24 46 | 82 49 76 79 57 9 94 84 80 97 51 4 35 83 63 50 69 72 20 58 31 93 7 24 62 +Card 148: 50 53 44 71 81 41 31 57 88 2 | 41 2 68 51 53 37 25 65 34 24 50 98 95 76 88 69 82 42 81 58 31 11 77 33 21 +Card 149: 54 32 10 37 35 3 64 4 34 14 | 77 80 53 7 4 29 12 33 69 35 40 32 11 44 83 15 34 2 54 48 30 46 84 14 81 +Card 150: 68 41 72 13 84 60 20 54 6 90 | 56 54 65 25 5 32 39 34 26 63 16 86 75 92 95 28 78 62 24 8 48 98 83 69 57 +Card 151: 61 48 8 19 95 28 56 34 68 72 | 96 73 69 11 10 29 91 44 28 39 49 34 17 35 19 90 82 61 40 86 95 31 33 81 46 +Card 152: 24 65 90 26 97 95 55 68 54 96 | 30 43 70 47 92 96 68 74 26 73 77 97 8 90 86 54 69 17 79 55 16 78 7 38 6 +Card 153: 8 61 75 62 12 30 66 64 97 6 | 63 70 81 41 47 85 76 11 90 58 45 39 95 97 22 34 78 82 86 7 99 18 35 31 29 +Card 154: 42 2 81 53 80 36 62 64 89 49 | 99 80 49 84 24 91 93 70 88 30 19 47 79 32 33 18 62 25 8 60 28 92 14 89 42 +Card 155: 30 76 60 19 12 49 63 33 77 90 | 91 22 96 4 76 47 8 64 58 40 27 49 52 19 63 15 43 73 97 83 61 80 65 34 9 +Card 156: 75 23 40 88 39 96 9 36 21 51 | 39 70 67 1 92 62 57 5 27 87 78 81 51 28 63 23 56 2 93 84 75 21 29 97 20 +Card 157: 95 86 3 18 98 85 31 22 71 79 | 6 8 89 88 7 38 39 18 15 40 22 96 87 55 90 80 36 9 20 83 1 34 49 73 98 +Card 158: 31 36 87 28 57 21 64 35 55 5 | 96 2 78 38 62 32 40 75 14 43 65 71 70 74 61 87 86 1 80 47 23 27 45 67 42 +Card 159: 52 31 14 72 16 90 94 45 88 29 | 64 87 46 77 51 74 40 5 16 92 95 82 12 6 38 35 72 98 89 11 84 97 99 57 93 +Card 160: 69 51 53 88 58 54 27 48 78 4 | 70 87 72 32 33 23 94 83 10 73 76 19 91 68 80 89 34 64 58 13 98 5 78 75 52 +Card 161: 68 34 80 98 81 36 19 61 79 40 | 50 74 25 29 57 12 73 42 83 8 86 30 66 55 20 17 49 84 82 41 46 97 71 23 44 +Card 162: 94 12 32 66 57 67 97 39 65 7 | 71 23 76 47 49 9 86 58 50 78 88 15 90 43 54 27 37 81 75 13 34 64 87 2 40 +Card 163: 57 72 66 78 45 23 76 2 24 81 | 58 17 19 44 5 3 2 57 39 82 88 24 47 8 90 31 66 92 68 45 72 78 81 76 23 +Card 164: 22 57 61 52 83 80 99 37 39 36 | 80 23 67 54 43 99 83 28 37 13 3 55 91 52 51 98 82 27 21 61 22 36 85 57 39 +Card 165: 62 81 8 72 15 53 36 98 51 22 | 76 6 26 73 65 98 36 72 33 97 5 81 53 69 22 15 14 44 11 8 51 62 13 45 20 +Card 166: 28 33 40 30 17 74 81 2 88 62 | 4 79 81 96 93 48 62 39 40 78 33 75 26 29 37 30 2 17 31 28 15 88 97 72 74 +Card 167: 16 1 46 98 76 85 35 91 21 18 | 21 82 94 95 87 66 89 30 64 10 33 93 23 29 34 47 96 20 77 83 81 75 88 46 49 +Card 168: 50 86 74 64 85 75 80 21 5 46 | 85 74 50 64 96 51 49 55 48 72 5 14 3 39 92 54 46 38 21 86 33 97 61 75 15 +Card 169: 51 49 66 48 30 10 32 67 60 69 | 42 32 67 43 62 66 10 38 37 60 51 48 9 29 16 49 74 25 36 91 24 69 81 17 30 +Card 170: 17 24 18 73 64 60 56 38 80 8 | 94 45 30 39 71 12 88 89 61 2 23 40 9 48 42 52 28 96 59 95 19 72 36 81 25 +Card 171: 38 32 75 85 98 11 17 57 89 56 | 52 57 75 85 32 61 38 98 3 16 60 50 56 34 26 89 77 11 17 49 81 9 20 8 1 +Card 172: 1 30 98 25 63 39 29 17 58 40 | 98 6 30 85 27 25 69 17 93 47 29 31 63 5 23 56 87 7 91 39 35 58 59 22 38 +Card 173: 88 59 3 87 21 91 24 4 82 48 | 97 53 67 73 28 66 45 27 36 88 64 99 92 24 26 87 72 96 84 59 85 68 82 49 10 +Card 174: 56 79 60 1 77 37 83 9 30 92 | 2 15 71 79 60 31 32 58 34 74 42 1 18 5 38 83 97 12 92 86 56 95 19 85 98 +Card 175: 2 50 25 89 41 75 94 78 95 17 | 72 81 28 48 55 17 69 66 40 91 78 32 27 2 95 13 50 80 15 3 49 94 90 85 25 +Card 176: 51 22 14 16 1 62 64 84 12 25 | 22 34 91 76 62 38 88 78 35 95 51 45 12 92 61 28 81 16 36 14 8 66 9 10 56 +Card 177: 83 47 79 45 75 15 44 52 11 88 | 26 5 59 93 83 88 79 44 4 28 32 86 52 89 56 47 97 48 80 15 3 40 98 18 33 +Card 178: 87 42 52 70 32 7 39 6 9 17 | 17 9 5 45 52 4 70 72 27 3 78 24 50 39 94 87 47 14 42 6 44 95 85 88 7 +Card 179: 79 87 75 44 93 9 71 16 11 5 | 44 37 11 92 59 50 13 91 36 45 87 77 99 31 68 94 9 62 71 38 8 16 42 55 5 +Card 180: 18 98 61 58 87 41 51 37 28 79 | 65 32 36 92 49 45 10 93 40 4 67 76 55 42 88 30 75 44 23 71 98 51 14 78 24 +Card 181: 7 17 80 68 38 36 86 59 75 96 | 68 64 54 8 12 6 88 45 80 98 51 60 53 22 75 50 34 77 29 38 24 9 48 70 36 +Card 182: 9 57 37 30 78 31 18 40 49 32 | 11 57 40 50 68 22 18 36 74 91 29 52 70 81 75 69 38 7 26 24 33 55 5 34 95 +Card 183: 36 15 99 95 83 87 22 80 59 31 | 61 99 31 20 55 57 89 34 26 72 39 67 4 22 2 91 24 83 56 44 14 81 49 10 12 +Card 184: 70 55 77 4 95 51 10 13 75 27 | 70 38 97 88 85 24 48 67 69 89 13 49 28 60 71 10 93 72 84 15 57 98 33 16 20 +Card 185: 32 53 24 75 26 20 94 4 73 57 | 80 22 1 10 4 71 16 44 87 35 19 72 47 40 59 36 58 2 8 43 23 46 37 34 12 +Card 186: 93 84 73 24 6 37 72 41 55 75 | 36 71 80 32 2 68 58 47 33 6 70 10 78 19 44 82 39 90 54 91 88 20 28 64 87 +Card 187: 62 23 40 15 57 69 94 64 60 85 | 63 26 36 8 90 42 58 73 30 28 32 18 50 48 54 88 72 86 13 37 22 5 87 79 77 +Card 188: 84 42 64 5 88 96 45 91 66 25 | 91 32 93 75 25 2 73 85 88 33 66 58 45 53 28 42 57 40 39 24 5 84 96 78 67 +Card 189: 59 99 36 6 34 46 98 29 69 53 | 52 17 67 11 98 25 41 34 59 69 46 99 72 92 80 14 26 1 51 76 33 95 36 6 29 +Card 190: 75 5 85 72 81 96 7 74 21 39 | 32 44 7 87 42 72 86 4 71 81 95 84 85 33 75 78 74 76 96 21 37 58 10 64 73 +Card 191: 28 83 55 46 56 85 78 21 47 37 | 46 47 82 21 57 29 54 59 78 39 30 33 89 48 83 55 28 85 94 24 72 96 37 56 9 +Card 192: 72 91 29 35 2 42 71 24 82 55 | 49 29 84 40 69 85 24 48 3 42 61 9 63 37 41 79 11 20 72 14 80 71 16 38 82 +Card 193: 61 88 76 45 71 29 84 78 81 83 | 85 63 56 2 49 92 47 30 71 43 38 76 60 88 81 84 98 94 8 6 51 58 42 70 61 +Card 194: 28 18 61 86 27 79 32 48 58 96 | 13 20 95 38 63 46 51 78 90 3 80 15 72 76 88 77 69 24 6 35 28 62 5 36 65 +Card 195: 96 89 40 50 26 36 86 75 62 10 | 6 5 69 72 82 45 3 33 86 71 97 34 36 91 42 20 80 93 40 35 96 89 17 31 50 +Card 196: 45 11 82 74 51 55 19 43 24 94 | 63 14 22 75 94 29 19 39 13 8 82 32 76 41 53 43 54 91 11 17 62 21 71 42 86 +Card 197: 20 64 71 4 50 90 49 17 8 6 | 65 92 6 60 94 54 56 33 80 75 69 15 49 71 26 81 67 37 74 11 20 25 43 85 19 +Card 198: 28 11 15 25 97 2 22 31 29 73 | 14 35 15 87 81 54 49 2 20 79 44 96 38 94 55 97 17 86 65 46 32 21 67 58 27 +Card 199: 50 83 4 30 82 92 76 11 55 19 | 47 50 57 53 5 14 28 85 46 88 94 51 13 38 3 89 66 45 87 24 31 96 69 73 44 +Card 200: 55 23 78 25 87 33 36 80 79 38 | 99 30 52 4 85 95 66 26 28 91 20 45 72 68 8 35 92 86 93 43 65 97 14 50 44 +Card 201: 33 75 55 46 25 63 76 37 1 73 | 68 64 22 99 12 56 43 28 44 80 91 65 78 27 71 32 95 29 59 36 45 60 77 62 82 +Card 202: 66 29 75 28 68 42 98 21 82 99 | 23 92 38 44 45 12 6 4 17 64 67 60 36 79 46 58 14 73 71 72 81 49 13 2 30 \ No newline at end of file diff --git a/inputs/2023/06.dat b/inputs/2023/06.dat new file mode 100644 index 0000000..0729438 --- /dev/null +++ b/inputs/2023/06.dat @@ -0,0 +1,2 @@ +Time: 49 97 94 94 +Distance: 263 1532 1378 1851 \ No newline at end of file From e1df8c80ad094e7f6058685d8b959cbdf5b21674 Mon Sep 17 00:00:00 2001 From: James Lawlor Date: Sat, 7 Dec 2024 12:46:03 +0200 Subject: [PATCH 03/10] renaming --- src/advent_of_code/{2023 => year_2023}/__init__.py | 0 src/advent_of_code/{2023 => year_2023}/day_01.py | 11 ++++++----- src/advent_of_code/{2023 => year_2023}/day_02.py | 0 src/advent_of_code/{2023 => year_2023}/day_03.py | 0 src/advent_of_code/{2023 => year_2023}/day_04.py | 0 src/advent_of_code/{2023 => year_2023}/day_06.py | 0 6 files changed, 6 insertions(+), 5 deletions(-) rename src/advent_of_code/{2023 => year_2023}/__init__.py (100%) rename src/advent_of_code/{2023 => year_2023}/day_01.py (95%) rename src/advent_of_code/{2023 => year_2023}/day_02.py (100%) rename src/advent_of_code/{2023 => year_2023}/day_03.py (100%) rename src/advent_of_code/{2023 => year_2023}/day_04.py (100%) rename src/advent_of_code/{2023 => year_2023}/day_06.py (100%) diff --git a/src/advent_of_code/2023/__init__.py b/src/advent_of_code/year_2023/__init__.py similarity index 100% rename from src/advent_of_code/2023/__init__.py rename to src/advent_of_code/year_2023/__init__.py diff --git a/src/advent_of_code/2023/day_01.py b/src/advent_of_code/year_2023/day_01.py similarity index 95% rename from src/advent_of_code/2023/day_01.py rename to src/advent_of_code/year_2023/day_01.py index d85152b..f62e610 100644 --- a/src/advent_of_code/2023/day_01.py +++ b/src/advent_of_code/year_2023/day_01.py @@ -96,13 +96,14 @@ def find_indices_of_patterns(line, patterns_to_find): return patterns_and_indices -def main(): - args = parse_args() - input = read_input(args.input_file) +def main(input_file, part): + # args = parse_args() + # input = read_input(args.input_file) + input = read_input(input_file) - if args.part == 1: + if part == 1: accept_written_digits = False - elif args.part == 2: + elif part == 2: accept_written_digits = True patterns_to_find = get_patterns(accept_written_digits) diff --git a/src/advent_of_code/2023/day_02.py b/src/advent_of_code/year_2023/day_02.py similarity index 100% rename from src/advent_of_code/2023/day_02.py rename to src/advent_of_code/year_2023/day_02.py diff --git a/src/advent_of_code/2023/day_03.py b/src/advent_of_code/year_2023/day_03.py similarity index 100% rename from src/advent_of_code/2023/day_03.py rename to src/advent_of_code/year_2023/day_03.py diff --git a/src/advent_of_code/2023/day_04.py b/src/advent_of_code/year_2023/day_04.py similarity index 100% rename from src/advent_of_code/2023/day_04.py rename to src/advent_of_code/year_2023/day_04.py diff --git a/src/advent_of_code/2023/day_06.py b/src/advent_of_code/year_2023/day_06.py similarity index 100% rename from src/advent_of_code/2023/day_06.py rename to src/advent_of_code/year_2023/day_06.py From cd09f1f16ff8f0121de126fa9e542aba8a2cb795 Mon Sep 17 00:00:00 2001 From: James Lawlor Date: Sat, 7 Dec 2024 12:49:56 +0200 Subject: [PATCH 04/10] fix input file typo --- run_day.py | 49 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/run_day.py b/run_day.py index 4472912..7f88753 100644 --- a/run_day.py +++ b/run_day.py @@ -1,14 +1,45 @@ import importlib import sys +import argparse -# if len(sys.argv) < 2: -# print("Usage: python run_day.py ") -# sys.exit(1) +def main(): + parser = argparse.ArgumentParser(description="Run a specific Advent of Code solution.") + # parser.add_argument( + # "--input_file", + # required=True, + # type=str, + # help="Path to the input file for the day's solution." + # ) + parser.add_argument( + "--year", + required=True, + type=int, + ) + parser.add_argument( + "--day", + required=True, + type=str, + ) -day = sys.argv[1] + args = parser.parse_args() + day_zero_padded_str = str(args.day).zfill(2) + input_file = f"inputs/{args.year}/{day_zero_padded_str}.dat" -try: - module = importlib.import_module(f"advent_of_code.year_2023.days.{day}") - module.main() # Assumes each day's file has a `main` function -except ModuleNotFoundError: - print(f"Day {day} not found.") + day_module = f"advent_of_code.year_{args.year}.day_{day_zero_padded_str}" + print(day_module) + + try: + # Dynamically import the module for the specified day + module = importlib.import_module(day_module) + # Run the solution (assumes each solver module has a `main()` function) + if hasattr(module, "main"): + module.main(input_file) + else: + print("man") + print(f"The module {day_module} does not have a 'main(input_file)' function.") + except ModuleNotFoundError: + print(f"Could not find module: {day_module}") + sys.exit(1) + +if __name__ == "__main__": + main() From 82509be049631b4941e115a2b1c64c601b198965 Mon Sep 17 00:00:00 2001 From: James Lawlor Date: Sat, 7 Dec 2024 12:50:02 +0200 Subject: [PATCH 05/10] refactoring --- src/advent_of_code/year_2023/day_01.py | 27 ++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/advent_of_code/year_2023/day_01.py b/src/advent_of_code/year_2023/day_01.py index f62e610..2829d0c 100644 --- a/src/advent_of_code/year_2023/day_01.py +++ b/src/advent_of_code/year_2023/day_01.py @@ -96,22 +96,25 @@ def find_indices_of_patterns(line, patterns_to_find): return patterns_and_indices -def main(input_file, part): +def run_part(input_data, accept_written_digits): + + patterns_to_find = get_patterns(accept_written_digits) + calibration_value_sum = solve_all_calibration_values(input_data, patterns_to_find) + return calibration_value_sum + +def main(input_file): # args = parse_args() # input = read_input(args.input_file) - input = read_input(input_file) + input_data = read_input(input_file) - if part == 1: - accept_written_digits = False - elif part == 2: - accept_written_digits = True + calibration_value_sum = run_part(input_data, accept_written_digits = False) + + print(f"Part 1: Solution is {calibration_value_sum}.") + + calibration_value_sum = run_part(input_data, accept_written_digits = True) + + print(f"Part 2: Solution is {calibration_value_sum}.") - patterns_to_find = get_patterns(accept_written_digits) - calibration_value_sum = solve_all_calibration_values(input, patterns_to_find) - print( - f"Day 1: Solution with accept_written_digits={accept_written_digits}" - f" is {calibration_value_sum}." - ) if __name__ == "__main__": From 9663f57165a2cd97fd0f73ece16447f8066503c5 Mon Sep 17 00:00:00 2001 From: James Lawlor Date: Sat, 7 Dec 2024 12:50:29 +0200 Subject: [PATCH 06/10] remove txt files --- inputs/2023/01.txt | 1000 -------------------------------------------- inputs/2023/02.txt | 100 ----- inputs/2023/03.txt | 140 ------- inputs/2023/04.txt | 202 --------- inputs/2023/06.txt | 2 - 5 files changed, 1444 deletions(-) delete mode 100644 inputs/2023/01.txt delete mode 100644 inputs/2023/02.txt delete mode 100644 inputs/2023/03.txt delete mode 100644 inputs/2023/04.txt delete mode 100644 inputs/2023/06.txt diff --git a/inputs/2023/01.txt b/inputs/2023/01.txt deleted file mode 100644 index 51cba08..0000000 --- a/inputs/2023/01.txt +++ /dev/null @@ -1,1000 +0,0 @@ -heightseven4two5 -npskfdstpk2knsm -djnrmpxjbsbpgzvtjkhq6pkkfshx -kgsddxsevensevenlcmkdlcgtfbqxmlnkhbnvhshkckppn2 -8blvspztqjnine854fivefour -ninesixthree8six8 -5tnzrrzmcsnfivefeightrjninexrhnnfbcb -dcjcj2 -4fhcmhdtfourlzdphfxvlmvm6 -eighth33twobfr -qnb2sdsfhgxmfqqzkkjmfbxzjeight -seven4zzsmcqtwo -fourthreeone1two -kkncfbsrfdsix9rvfpjrdxbgcssmkztwo -959eight3two -sixpmvlkkdjf3frr91 -five3xhpsdfkg94two3six -bgqqglhqqtwohhqpgqjvqj8 -23seven -kkddrrtskfive75pcmhhxcxzfourthree8 -smtfgqg7foureight -281 -eighttxqtfjrldgxdpgkblzt3three -zjznfive4 -5hpxksxc -dvrkfvgvtwosnlqqcfivesixstglhvgfhlrgczzgvkvfour3 -sixllkhdpdxfvhqcbgz24two -drc79twotwofive -2vccthreefive6sevenrzqprfflnlsjtb -3four3fjqm7lntttphvs -threerzshdfgs4seventwolpb -9threehmbt5 -9plgm -17bjhndv3one2 -jghtqonesix3 -1kzdfjeightonesixtwothree44 -jpzs23gvjvsztbcvthree -v5hmkncqvtqxvtwotwofiveeighttqmbk -oner9kmfrjdbxcffl -bmnpn9n -3dsrcnssfgn -psstwonesevenfvctwo9vnbxflpntcdllpzpkgtwo9one -rkmbh8 -two1twokmkr -sixfour9xsmpzzseightvqn -threemmbrfxlqjtjgx95r9six -seveneightpthree91nine -twoeightfive7rdqqs4 -5threesevenhdjnrseven6five -45nineeightnvoneeight71 -hrprrsg6eightrmthree7xnkmdcdqm -cgfrgmflvthree38grksbjnpfhqpnvctrmtshffivemkzqmlfn -227 -79onethreervsjtpkkr -229twoonedcvz -8ltnnqmtn7threetdfxd3 -3358pvbtbonekpbcvbcrrz -fourrpkmtvvqfgsmxktqhvhb1mnbjj -91xmzmzfbt -vseven9 -6four2 -32q2 -bneightwo6eightsevenxl3 -two8jhbchqncbmsvfhznbvqmpxr931lnt -cvlbktjmsevensix9eightfsixthree -fivethree8sevenone -prqr1krjgkllqrdmjbdjnvvc -six4hspnpbgfivefour9fourxlsf -zhxsncl77321 -dlslthree1sevenkrrlnbzggtwofourtwo -rqtjzv2lqt7dfxcvfshtwo -31oneqrnnzbbjfthreesix9nhnpqmnbnx -sfhlrqt5649eight -sevenjzlxthree6kndrfvtwo8zjzfspgtr -2f -4bmzvbpkfmtwo946 -eight8qkpxm33ljprdctmghfrt -three643sevensixfour82 -vkdcnhhlhltsn6 -2sixsix264oneightm -6rbx9threetwothree -hhvtjlxgjpqbzzdcfpnhvncbqf94 -nine98 -jknmeight9seventhreemhdxddhfive8 -qljrvrprxthree1fiveeightwoj -bjtntqlhk3mhjqmd5twolqrjtsixfour -fdqddhxvone1twogjpqclnpjqxjpk8 -4cffzxeightfmbzfourn5 -56947cthvktgff -ztbhdtmxtrbr1ssxmzbvhfiveeightwox -two1phrvdx -16vvrs1szzk9 -67rhvtzvzvseventx7 -2kjnmseven8 -tonenine9nine -threeeightseven93jttxgtdml2threeflclh -2hxsdksfmdshxcdmxlb -seven9threeqslknninelfgmrsfjjjpklbh -3twosevensevenfourcgsmbn7hr -threevjvldjvstn2sixonevcljlf -17cninepqgjp -rjrnlknfivelscqfhhfv75 -five7hzvvh -31two3seveneighteightfour -78seven -threesixmzsldcxpjnvrkptwothreenine5f -trrxdhp8cqmfivexx7 -tgppgp9 -7five7grcdhsz5seven -31eight -nptmpmghrhsktcjthtonek15 -xgghqkqqqsdxgjzz7 -vsix1sbthreeonesix4eightwox -gqcvhpdvl5onejmlrlljrf -pdgmnmcptwo4 -dnzfgpbjxkkshgrg9qk -fourcrnntcxrhvnlsixbfhvvdncfdeight6 -84krfhzg1onesixhzgpxgmfivedkjqxnf -threembvltrgmgpp795xdtzsixtwo -nlcn8 -76ptqpzkllmvrpthreefour7 -nrfourxjqxkgqj6126gjrplj -tx685 -1fivesixgtlnine29fourmjgjgg -5vzx -86five -qjhgkzmplgql1jppdxmhx2zsbvnxlj9rbxvzsxnj -7pkgpzmfqr -two58eight9 -fcjnpsxthreef1pzgkxqhbfgvjzsix -4s95czbmjsbgvcztqncdk -72zczgsix2twomxpgxfour6 -nine7kfq -nlqcsrdcbkxsrgktbxch5zdjjkkz4fvk -34rhkrpfdpcrqmvrpltrssix -seven6mgdjmk3htqjlqbpbbfftt -3drdclclnsh1srjkshrc8fiveqtssmbdqbvtcbqzxx -4mdzjqnrjdj -gctoneight7fourbqhb3 -sixtjkrxjnj7threethreesixlbvpmf8 -9fourone4qzjzzzlhhljjqtfourhdjkqnt -dpdpxgxndx7eightthree7eightfivexdllmmm -nine6cnvftrddnnineqc1 -8thtdllhzv -qjgoneightgcmltsqcxrninevqxtfgbrp6 -xbxcl3glqgj -one7fivefour4 -fourlsfmgm7jr76 -5vszbtzdzhxmgrgjtt1qrczseven -eight67 -1jk96three5 -54ftvrpgzz3 -four4gnine -fbljngxt8threeqbttzsnnineninethreexdzggvjd -rmsix29fsfbmjjptf32 -x49 -5eightsndntqhhgg -pnlv9svhnskn1npbjxmsixtwo -eightzdvrjf4six9 -1sevennnkcdzcrthree8mz -eightrtgrfrnqninehbhllsdpqthreefourqk6eight -onefxtkztwonineninecfnf4 -threegf3jx -sphgjnpv51twoone -four89rhng -eightsix1threebfprrbzv -9sixfourlmnvgmnmkeightwoc -qrhsnjgndl7 -twoqqglxqbsix1nine1sgstftqjcmzp -9fivemqbjznffxq -lngzjghbbqmrsix5x -89ksqrbdpxfive7 -slbhmrvsstwo1gqcxztgdktqqxzmkpqfqfffgnhzfc -two4sixvtwo6x -oneonefive4 -twofourtfcqzptworq2nine -7pl71three3nclhsjcds -nlptvmgqfourfive7 -nsnzlcktmpcddcpffour3 -dtoneight5gxqbzbbvxc6gpplfzgmkbvmdnlhmg -zdcxqcnfive6gsqqvqfnine58 -fiveblnlvzkgjhbhfgqp6nine5kh -5onegbcdv51fxggdgthreedbbrlkg3 -29twobjpnjddone -seven9nvdndhdfourzhvqzctznqfour -3ztwosixcmbbztbngnsix9ts -8sixpxjcxv7zvf -onedsxmrhflvlqkzjjls8pmtcpteightfoureightvx -8fourfour -dpkhhvkxmttlk33 -three7txlxkdgcxglcb -5xzgxfgkqninecrkbzcfive3 -81fhfhpvxtnine2tfptjkthree -two2twosixgjfour -ncjdrcnptrtwovhzfive9threebmtttcznr -3xgnklgnnhbqgt4fiveghgksglkhlxm1 -five335five -threeninefourlqrgkcdlzfive5 -fiveseven89four8 -seven86spzkbt6mvq -3sevenseven -jm66b -eightqbttxcfzx88cnqjjdrhvcjzvfbdnzmrmvqbvhrlcm -ckmzsdhxqdrdntfivenqt36 -2hjb -twoone5two22mfmf -5rmfznvcjhhtccnkpmtwoone4 -478dckhsmpkmktgznjqfd -5gdqbjvdxv1threefoureighttwo7 -one646sevenmdmzzks -ndc1bxxdnqrnqntbvfxtqm6one -3vcsrrcfknmrgone -onexkxhbjkjn7eightfourqxtsixnine -sevenfive2seven327bdspzbv -fiveseven4xgpbb7four -ztjzhgsrm2seven -1twovslqxxvjxlprtbdjccscdtlngm4bxxhdhj -8rcn -ninelcqrtfbjxlvfourmeight54 -99466bbctwotwo -4twosixhpbhckdsevensix -4qmqrjsznine6 -189jninecxcmtpcx9 -rfbmtwo5gctcrqgthree -mcmpthree3nvmfshmjbtkgqsnine -np2 -four1fourjsghqgmfmrnzfxbh5fourfour7 -kvskplbpgfninesixvzkrv1fqnrjnrhvnpkpkhph27twonemvx -lghhsz175583 -onefive15rvsms4 -22twothreeeight -fkhsfjtqppgrckfiverfsrbggteight48eight -onem1two -nine2fourfour7mfourfourcpnvgcx -1czphscxrfrhqnqgn8 -ghgphgjrfcthreevpjdsevenseven8 -2gzcsdr2four5 -5eight5 -rzgsfive9lgbsqhsbxr -eightone5g -7six5 -63nine -7fivetwo9eighttbvmdb4jskprq7 -6pmgtckvz7 -nine49seven9gzppzm5 -7xqgxgxvqptwo81tlzzrchqxfq -two393 -pznknine67 -onenine514threeeight -mxbkksjfkrsevenc2dtzzfsnqhc1ctjthree -ntgmnhtwofourtwovbgmdnthree2pxv -sixnineonetwoone7rrqfive -vbz95two5zdxgtvnvrtmklt -vhdv7pcn4seven5one -zjqrxmm1ninefiveeight3spghctcttwogcqtrln -1fourthree8ntvlhmxvbbtwozlgjt19 -mg7csnjptsnzsix -4eightthreenineqtwothree13 -782mjrfmdf22sfive -bxfx7six4 -7three2dmmkz691 -sjc8ckjn -dkdfrsgb87cpnkchtgjnkb5q6 -seven2fhtdone9xtpbq7 -four3jmlftfzcdmcrfhjfkcfninefivesix -kdxrl7eightpsmlrkllmjdpslnine -three7nzxl3k2nine6 -7five8two -sv8mj87 -vqjzjjps45hdkcjbsl3eight174 -gfljtv7one2z -dveightwo7zrhmxjvlxftbjrqjcxlfive9 -threefjsvftzqneightfourtbvxqhssgrntdzpx2eighteight -fknxqdhdktmkcdfive1five -gs6168 -8twotlg -fivetwo7one14 -64tjxkdfxbvkthnnc -2onefivenrsgzpdzgjztpzpmeighteightttdfkgtkvltl -nineeight65three -mkbjxsgnineninesevenng2four -3xckzkhh88threepkj4five5 -ndxjxnvxbcfgdfz9fnphqrpvcheightpmxseven -2twodckhmzjvdgthreesix -rttwonecdl4 -qfvsd7kcqjphrqzmlvjffdscbeightfgmdpbfsdpseven3 -five68five -24tpfour17sevenlpkngxps -meightwokqnine1twojmsxxvbbrlqkprmxxlng -skkxpheightseventwosevenbfbcmzrpl3 -jvxhdnldseven58twofiveflsdcrnslqmqfvx -15ninexgmsvtpfnr -five758ssrnh -onezpkfv4vnhhslhgk91pfbtdgqqcmcdqnqxmk -rjphmdlleight5six7 -863xthree -cfghvcv5 -bmbfourfjtnxqppkf882k -dqnrjlvhxdfivenine8xl786 -lqrqspsxtwo6 -oneone9dkvzhsvgtl -9sixf -2nj -hsvrgtmkxcpxtjncmthreethreeone7one -vphqfour4 -qbpxpfmcxbnineeight8eight -26 -bbmspkz22onejeight1 -rljffive89phxltnine -five3dhscqeight3six -nine8msgnltpxf -38jxrfhbnclzzqqkvkgfourcfnxt -9fzlghgp -vjxprkvhpg1sevensdeightshmrfmmrt -95threethreeztmjkvqmgx -sixsfgrkqsc6dsixnineq -fivetwo267lgpttkflb6hcglpldzv -6cnscfjnlhh8x8qjbslh4 -xcxbjg192 -29sixeight -8xkpzfvhdnonemq67 -zxhbcmkbqpqkx1t97phfgdqfour -sixfivefivesix6sixsixjjp -5sevenfour1fourninefourfxsqhcpggone -ldpmdf37six1hfsmjnngmbbsjtf4 -fourtwo3lfzphbl1 -seven8cndkoneznhmtqnpr -9ztwoonegzpfjmgdjhhtglnsmjmqqssn1nine -3jvptqkjhchg9 -qbtwoneeight1nine9txvdpdlhv111pfdnr -3eightmkclrtz51zchkqh -eightpkrvkqgplptwothree5 -88gmb4dffm -fourghmpbfc3 -hcpllninenkcvjx1ghptwo36 -fourone8xdqmfnsdzgninerfbxbfourjshsvdksix -hkljqv5nfkbvveight5 -c9bczrtpqzj2 -xgjskgzkfive3oneighttdt -9one5psix5jcjlhz99 -8gpvvvhpfqb6sevenhjldkhsjskthhmzzgqxsflseven -96xjbsjmkgxgbknqckcrq -cdgjhklphq3chkgtwofour2 -nine9mqfbxdspvn17zkbl -3flbbpjgfh -two9gfn7three1 -zjcksix1dpkdbsxbrseven58 -oner9eight9mtspfsix -1hhdz156qpfmmrb -oneeight9 -crznkknhn716djrhfivetwo7 -thkoneight54nsix -xkkprql688onesixtwonine -791rvbxbcjzfqnine -fiver34 -3onefivenine183four -pkvdxfive6six -6ninesixkstsggvvvsix3two -onetwo6ctkntf -76sixfivefourhspsntf -five6seventkdstwoxdb -9sixzgmrrzfzcfzhrsseight4cprlmkplfzflz6 -fourmmbnpneight516one6q -rpp86sjvzxssbjtfive -three2sblnqxxjntksxjnvonedlbmxrrpzpcjpnn -lqcbbl2rxjhh17zxgjgtkvq2five -svvjsxxlh8t -6bhneight7ljjhjfvsbnsndvrc9six -sevenstgxksfmzd1ktwothree1mfour -527nine7 -295hkjbvf31 -bpzlfour1ninetwo5 -bh5seven3chjvfv -7vggcnckrmgbkx -msqpgd87 -ninekmnjsix9dd1 -three1two -qnrlcck47sixnrdkqnrxmlz5 -1rxseven891 -24b -4fdfrgzjpmltcqg36tpqqcvbznine -ftbtsix3 -njvzhlbthreezml8 -j4nineseven -4dpgmtgrn -97rnhk8rlp -3fivefivefoursevenflxvnbzlxhffgd -ftlbqxslq2 -eightseven3 -6dhcthree171fivecdldskdsgj -54nine -87twovpmn -28mzz -seven7csqxqn -crzrgqk66five5ngdh -xzjlmmtqgrtqrpmchfdbjpdjkqppxhsvfnzrth7 -sixfourjqbgsix3 -5eightnine54 -26gnqghndfcpmcvngqvzmfjpr8 -eightninethreebjjjvsgnonetwogflphxkvmz9seven -6qjqkmpstzc -three97sevenvxone67four -35ninetmdxqngxr7 -2sbrlnqz1 -pnv91 -5four744seven13rp -8bsix -8bcr -3eightljdhfxlnsgxs49sfzhzlsgvbldskr -835m7threefour -x3t52two -onelrzhp1one1seven9lcclzfkn -7rjzxvzdfeightlhzrnqseveneighttwoseven6 -seven13 -zkkknsevenzqsthreenine9four4 -vsszkfqpqtpxhqzpx6rkngzksmeightonesevenvzkd -fourbtkgjrglhxvccbjlnxlbhvsevenfourzjhcgmrr5 -two95 -73four5eightfive1 -8ninembxfprm28 -ninethree2twofive6 -18two -xjtwone7lfdzdvpccjsixp7rvhmh -six872jbhpgznrl8lkdbvfsgv -pnsbvfqtmkjtxseven7hkjhhmncgx -qljf6 -four3five321sixone -xvt15qcqd22six -1ndxz -gxfeightwo1two -22eighthxvrcmx8cqmfsix -3vxxlvgdvd3five3 -6threenine1tscqllqbone8cpzsnrxc -twoseven4snjpkmhnrb -gl3sixgxtttsldsmzhl5jgtwonem -seventtmxdmsjgtonebstmmskzsnsgthree2 -ctgrq17khfmdfbrl12txtsmtfndxmvcshxj -7six9mkkl -five1qxfeighttwo -eightninehckmhftskt7sixgeight2 -fllbppftcshjmtdthree8hpxlf -2one15two -qrzzg8mhqjpcbbfk -nnbnhlmgg3twotwosevenf -9tqqddhpsbdhdnkrjlxnqmjf -dtgfxfivefivefive6 -one5jgbcncmz4fpltcfcdg7 -12czktx -344nine -7zqd6 -sxgftzrr1pkffhkjtcv5mclnzsvdqktvkrgbnctgcnine -slfztfq5nineqcbdpcn5tczz3eightwont -9eight48kblmfc95 -4xmrglzxtsix -qhrgkbnsq5three646qntnvxcvg -vb3fiveseven9n -vgcdgctthree1281onemsxqvgnsix -bcstq5dghsfrcmftwo4lflbbrpztwo -hpjtwoninetwo87four6 -m3kgqggsdjq -26ninejzhmbp1 -nqtpvvsm4kjnkkz9 -5sevenfrqgpvqx -twobqcr9threeone -ninenine2qnnine -fournine629sixfive9 -sevenlsmstsxbpfzmkxsdp6 -1946one3eight7hhlqqkb -tjqmxhkhcsix6nineqdknshfiveflpcbxr -8seven4seven -8zjmndrdpgqsevencghkthree5 -bsrkpbhhsbpggn26 -11threethree89hqpvkqxzq -vjlhmd182hzqmsbdpnz2 -eightsjzfonebdcmlkcp3xdssfckqffsrpjfbb -krvssix8fmpfivezpljfpeightfdkzkgmm -fournrdhfbstx5fivefoureightfive2 -fivedfivejbjdd4eight -sevenfivetdf4one86vv1 -7eight7 -2fivedfsdxfplllfq -qcknrkljqxone75nvg85eight -vvrhxxvpvtsixrvskznine9 -sevengtcdtpgmfivexffgffst1eightjjmskvptrone -86five21zflbtcnlm -pfthree3oneninegzqpgxq2eight -17onekfhpvhppj1hdthrmdggxkgzxhxzdvbf -3sixzkml8eightfive78xv -pseightwosixxqjkfj484three484 -7zdpcvdnllthreefqpcttxbrtqpkpklnxdfszkxsbxx -2threeskpqphjffxnnvk6 -3nine66threeone46k -seventhreezgtlg12gndthree -8sqnqccmseven5 -sevendssdthreeseven2smpgpvdeightwob -hzcrrlkm8three -xtwone56pgzt5two -one4ldxzbjxlmsevenstqlgz -fourcxhqqlxfourtwo5mdjbzn -4eightbrtvsbjgnc -ninemfjghlonenp494jsjjnrhvdkthree -8threekccsevenfive -4bfvscrpfivetwospsvkvhmcptmxqseven -jzcbsgvljn5vtcpgh -8foursixseven8fivenine7 -sljtbrnsrcfourfivesevenzcdsqrseven95 -five8ninethreefive -fivekgcxtkjdvjlr9 -two2onefourkvgnzbfhhqgpdrjxfrrxdmrx -sixvb14sixkfjxrqskbq -three71nzrdggvlsxxxcfzdsrvpvbqsjn -vlrlvrqpvm98qphgsdkkmhdzfh -cmnpnvnine2two -fivexzdqfr4two5ninekgpzqfdgqlz -eight92dd2cgbqone9five -4eightfivevjfffd -57nrnktqrqlv6 -mqlhcpeight9zmsmh485 -hthxcv9l5one -nineeightlptl8fivefourmblrxbtcvlvjftcr5 -7fhgbqs -2v -jnhldbh7dkskeight9 -37fourlcsevenone5 -5jzntdrmfourhxrrfcxthree -four722 -7onenine -8sevenzfzmhkxjnr8four -nine2z -378bcbkrfsnfivesix2 -bdxrq6zsjkdcnfglc -4nqsvxznine271five -2fourthreethree6 -7twovkt6eightkmgzbd -gdsqb12rpqlfourfive -1gczfive4four8five2qbrsddkj -rrkctrmffive99jsgrbg93 -onegxssfourthreeeight2fztpvcvvn -fivesjmzppdlj57 -sixone35fourpj -nkqbbztcc7 -551mhjcn6onesix -49thkftkcsl -jthcqlp7reighthgdjbjpkxeight2 -threecfcmvgmsq534hhmbchteight -kjvdbsrbmxdjpjh7 -fivetfkphxzpkzpvrhfvbd4hfour6zhprttq -ccjcvssevenninensnpxcklbxqlcdgmvddsseven3 -2119six3 -5fourlznsqtvdcz -pfxfknrreight6twonine -bqrscdjrldsix5 -zznkptknm7rqgctxdthreesrhqkrdmsx -hmfjsqk6plqcjxcxmtwoninenine37 -meightthree65 -threenqqz7dhjsgzznhvm44six -86rdjfptxhhv5eightqkfive -91lfzcqshrfxssninejseven5tcqpdx -2xqhs -five6twognddnhfivesixxqkk1 -two85jrxgxcxbr -xfrqjfhpztqfourthreefour3 -tlqzlcckj2xrvvnznrnx -mltpqxbbrprvvlsfone8jbpjkjdqxtzlbnhhhhvshfnl -two9smqghpzpc2 -cqpklmdvnldgsdnlpmdpcql3jmlfvgxbgeight67 -7hhlcbpffour68sevensevenonesix -sixkvtclqcmlpjqvbbrn7ninevjrgxdhqx47 -975two -xdjb57five65sgghqkltxjtwo -8pnjssxdgbdmpbkxbdmhbr -3tgnrsevenrggtxps8rlkck5sixcrdccvcqg -xvvglr4 -fourdqtzrszxdvknq9dvxks -3btdbfourthreexhnjqrtnnxttqcfsevenlvhqxrsbpgqxjfvp -9onefzskrcpmpthreextjnlteighteight4 -hgvch3two -7nrc -5mnhgg -4twonine -7six6six -vjeightwoseven83mjfdpzrnnp -gfrgsixqmcbdjrtwo4tsxghf -7mmvkgmq -8qckbxdkqzsclqfive -3four52eightdhmr66 -ftoneight3bdbqgtfmsrfive3seveneight -scrkzrfive66 -9nb42xdrmbzpz -threetnpkv276one4sshmxpdc -2455zjh1one8 -6nc4seventhree -zjf5rnpnrdffjsix751mqbpgfgfjn -2crtmctwoseven -45fourmxzqzmpsixr3 -91lxbnn1twoxrsjsppjtwoone4 -37four6 -rkqb4eightthreesix93kqkhfsvngljp -ghhhksix38eight1qplkftstdnone -6nlxxncvqv71fbv -9169nine6kvcklgmn -vlddrrvcbd87mctrcj5 -one6fxninesixshdrtvglzlfbzlkvpmtxsix -threemkrzrthree234cnngnflmfdvkt -onefdcdnss8xx1 -oneone8mh8eightzrstvstwo -fivekdmdgdqpcpnineqzmnpsjktzxpvbzrsp1eighttwo -fourxckchnmz2five2hcqrsxgj -38five -onefivethree4cone -fourjrzqcjjvgm6five -9lcjvlsixtfdktbkvv1gsncxfdhhttxlzb64 -7two4one9 -7nineznmdvrpl -threesixthreelkvmhzhtd6 -mxdglbdzqlthreevbjlzmvf9mkbdrtxpsxpgpkdtfh -rjkpvjtdbxsnhrrhseven2eight5six59 -five8sixhblpctxnvtwosevenfour -9rvhtjcb -3ninenjgftq439 -99oneseven61 -54sevenfive8 -foursevenfxsmzxccfnxxc94eight6seven -3p4hnbfcxbzfhrnnhtbmprdhxbfivekqkhzbnkc -fiveeightqpghr9kfdqdlqfour -7five18qkqkzhs75rp -fourtwo3fivetwo -eightsix28klprqxzjfiveone7 -twofourthreethreethree4 -75six648 -rmpndcb797seven1 -five347dcqzmlbdxprzlkkds5ps -mnkmhrlgs7 -tknjqmsfivesevenninefour1jrlrpkl4 -6three62 -eightjrrhxd7csevenvfive -sixh3dvfjlxxkjj -5251fourmtxrpxvvbp4fblrpgtnlgg -948 -76fournine -eightseven4six99threeseven7 -73nine7 -4pknine -6eightmdmmdjone -22nine9kbgfdvjqvnmfqglhpnfhfvzxd -five6srlgmmvs19four9 -4nineone9sixs -four9tgpzrhjzqlhlxgqfz7 -nine5onedxflzhgf9one96 -hpf55 -kreighttwo2 -eight2seven29three7 -three7two1 -dhtkvvtjgzvrrvcjnqlbjsseven6 -93twofourninekznthreeseven -rzvll61 -f47ninexfqsbdrseventwo7twonep -qxcnfoureight6fivetpxbmbtwooneightm -xqkvmbth6onerzgvx -ndmjbvgzkxbttwo5one399twonef -88ncg -twomfiveninetwoltcgqkdch9three -bjgnmpfzninesxbxnlplk45 -jv5tcfkksdmtthreecvsgz6hp1 -78fivehssmgbkzlb -ztchfjrmpgsevenzsjqzmsjj8ninehrsbgknine -tksztsix9kqfbstltqdpdfqjgr1 -413ptmm23two98 -4gkzvsevenfivefive -bxms6rcd -k8two918hrnine -threeone4crkrbm1dmdlqqd -foursix5nine -one4trvninevmqx6four -threethree8five911 -6l4fstcmprm -seventhree91 -onesptwoqknsbrhnine9 -9ninebkmzsixvqnb5 -seventhreepxtcrc3gkfdsfpsfgfzvlfndgb -pcvfrsgthreeftsjvclfournine1kbbkhgrrvblvbkzgbpc -bpjfive9kdlcxbgn9zmcch41 -hcbflhjtsfour7qdjvv5kzjrpl -dbzd6mmsn55fivegkl -5stcpjhscvlsix2qqcbtxnh48 -lxfztjckeight2jsvfs8fivethreetwonel -jf3dbxqmngr -tqzqffdgnstwonnleight4rseven -18threeznntcqpxtlq -fourrmzzjvz18 -9ppbgcnvhhq3ccmsndrc5nlp -3pqlfpfltzh -2qsx4npflpn6seven9 -one2fhhfdzn -fbztdmqfgj91zskxxdcvbeightmbspgqmbggtnpg -24nhzonefourfvjq -7lfvgnpvbvjtworpvcfqqjbthreeone2 -csrcthreeeightsevenx9ninesixsix -43bncszsgmljgndbgnqc6 -13onedrjnonenine7 -six1four -sixeightone2two6four -fds3sdhbonenjlllhqfc9threefour -mbslpskb82four719 -6seven5 -sevenfour9vsixrn3 -755rbnrkmd7sevensevengshmzhmzrpzqhq -eight7khxnvqpjd -clfour5jppbonevgfj9llhfggbz -zcskxrshvbhn4nineeightndhnxs -ltzzbeight4onepnine -fives8fivethree -s5476vcslone -lj9ninekbjzlgqfour -four8gjvhkcvlml -twoone9fivecgcqlqqn74rglfbqbf -vczbllnkxkssmmtrz3ddpzg -threenine9cdqjmsfgspfive -dxtclhmkjxqsgcs938sjr4 -nrqlljlsixjhbfttptcchveightfour4fivesbhgpcnzg -sixthreefourbrtstxbh32 -sixhgdsqj22 -phshjcs7 -fivesix9 -48cjfeight83 -617sevenonesevenqjprssznhmfzrtf -two6three95eightfour -99sixone25jfssmjsmxj -fblfkzkrzqjdbvpmvvf197 -kghllmbfiveplhptxt71vjtcmdrql5 -fivenine6 -six7drddptwo3fivefour7 -57four66jxxjv57 -3blj9twotwofourfive7 -eighteight64nine -nineb9four8 -27cztm -18cgkcnxfgrlsj1chrpxqnnrcone -47sixthreefivefour93xmfndrz -gmhxpninehvfbqdkbbb74drcknctrthcvvbrllvfouroneightbbx -8tccpt1seveneight5hsmxvvdffive -1ninefivecqkchg -seven6six4jjfive2 -twotwozvvkrml3nine4fouroneightxg -482tlvrmdkzfour -fivepeight2 -one3threerfdlnrq -seven3onefivefive3 -tjnxfjrs5dfthkrxklhrnsix -keightwohzzxgnvb2 -kseven7six3five2three -sixvxbccbjmvrbpqxcrzfnsevencdfptrdeightfive2 -24vqldhgtpzpqmsnvcn4onekfvbhzrbrkqvh -mdnl2 -9sevenlfkbtsixvspnnxbvkd -cvhhcvhlgc3eight3 -8sch3one -nine4xhfrppmffone2ninecnrdtrlzzmkrsqkkc6 -three81pfj -frnrxhkhfkncxeight557one -6gcvmmvmlss33 -3zkfmdrc9four23vqvpgd -three71gqdcpzpxkffhpbnbhfjgrhlzckmcrdtrvpnckkvmsp -2phtgvfsevenpcpcvkpqgvkddmzdtbzxjppppptr8 -tzp3ljzslxzldqqsgl99 -eight24five1 -ssfjsnxptwo192threelcdbeight -eightnzdnxpgvzqh7eight76tcj -8598fourhclmkrtzkjgkfr1four -83qfzhmfnsixfourqfpjclprrv64nlxbqdbbst -vdlsvfourcnnninetwokkctqtl2 -lfxoneight8grninesixtwo -82onevhzhthree6 -qzjxbls1 -fivethree1three -qgcqc6two3xcdgfsfournine -6sixdtpdpxrjsixoneightbfm -two4foursix -ts2xkoneightr -gtkhl73onesix1 -7xqmpssix -sixsevenninejjtrh64 -6q2six6 -sixndmphqqpft3one7ninerksljn -eight44c -ppvsjhv32jzctbzceight -ppgeightwoklgkdchccmxxsixbqtkheight56 -ninefourtwo5sixsrrv18 -fivegvhbvkggpcqvksn34fhcxrmhvvt -nineone6eight29jhv -3dvsfpt4two -8257kbvkjjlhmr3 -9ccone -pcmmcblfqfpgxpssnk2 -1twofqfour7two -six96twonvrmnzzeightwoc -kqgsdxjjksdnzjdcd1jqnkz -threenine8698 -seventhreethree1251 -fournnkdvms6fjggsxlljshhmh9sevenfour -2lzxtcvvchmhxhqlxrjspg3 -6jxlz1cqbcjbhfxb9321twoneqq -fivefourfour4 -foureightbjjd7grgvxlm2three -zcdgdslqkkzhmsbdtmvqbmgfqdg2twogd -82onemfffnm -48trdhznd1 -5sixeightsixsixcsjsrnmzbcdjn68 -lvtjmrpfouronethree84dcccm -3sixfsrfour -sixjsvlzzgxrxmnine1kzjrvxmghfour7 -nrqqgsmpkcone3one -lmnzcqrrhvkckzdg5 -29fivebnnh4zv -threefour9dz4mvhh2threesix -six7two -two5zx1threefourseveneight -frb1threefour -xgrrxdmpcc4lvnhpvgcdlone89 -five28qtnxqxshrmspdghsfvoneqzzpjlnvxnrctptlv -eighttwo6eight88seven4 -fmxdtnxfrfivethree2jqqx -cvxktgdvtbfqkvvds2 -vkhmjnlk99 -vvhphh2ttjrscppq -sixjfxxqxxhdhjcthp3three -3gvjntkzcmbninenj -sdlpseven9pdcvonefiveone1 -23pcvcljhtgbthree1eight5one -3kreight7k -mlxvzqjsthreesix98 -6h94sevensevenldthree -six86 -four1four15seven -rvqbkndfqjeightseven84 -one5two672 -two7three87fmqgdmqvcvn8 -qxkkgsixbdrqz7pqsfms -four2v1seven99five -7ndxpm -lrrqxnjtvzfdzplxppzonetwokrmv131 -fourgvjbhpxqcseven1four -thrthbgthree7four -jbnkcqqczzpkq357sixfrgsjhjmxt -rvrjsdnfldcqnplsqfnine6three5 -jgkzn598fhqqxmsqjgpzonefour -qkjl1vptpmsseven41oneone -fiveh94two9five -2lrxjflmvq9 -jtcdnjtcgffourkztkqfrfourtwojpqtq7qjdzkfour -eight3dlkndonethreetwo9one -2bqfprnkz -ninesevenfive63gxgmjvqf3 -tkvoneightsixsevenfour8nine9gzn -sevenninemlzdbttpp3qb31jmmtmbqnr -hdslnxgdz48 -four6prrfbtqrqvdlx81 -2hgqtnbxnqtpfive66dpn -jhkjstxzblfive6vvd -ljxqtqrgm6bgfppeightseven9 -gcmlbqtnm4jqhdhsfour2ninefour -threeeight1hrdqptwo6 -mlxvrhjqz4twolnkqd -npgnsgkmxmeightsix4brmcjjlbl6 -jrtwosixvrtrfvvpnine8hhqcsj2 -5ckctkfour433qd -9zczvzz -one46ninenhjzfhqcbtwo -26mvspqqkxntwomgsfvmfshvmndcbnfxzx -zhponeightbslzggxnpjgt97xjvxqrrsgj6zclqbmsdb -175 -fivetwofiveeight2five -three9sixtwo34 -7foursixhjvpndkjtqzshxdczg3three9 -8six3hqbcnjsdxr922vplmp -tmrbnzlrs822nineeightnine -two36nine6zhvmfss -qdkcfrmb7 -9dcbzzhhgnclcdchgcthree -tmxkqqstzqmp5pf97 -four86fivekbpjggeightnine -mmsvnnxeightjqpdsdmgjzssssjtwofive6none -5bchshczsjdh -39five8cflqglqhbsixmqnfpqhh -8five89threevkvgbtjrhhkqdkllkqtdjrv -ninelldnine4 -fourseven52threebstwo -9zdkqprhfdnthreeddj -threetwo5tzthreetwoslzdkf91 -eightone5twofourdhdjpsbj7 -2nine1ninesixlnine7 -threethree824six -threecbcvvcdgnzthree8nine2ckcvvqvghhthree -nineninefour9ddctwo38 -sixthreeghnblhbsk5 -8threephn -tpvoneight1sixjzkrtjcbpkxgvnccxvxbglhhgsevenkchhvchz -xcdsxxfivethreecdd77 -seven3twomrjfrxninefive2 -82twotwolsm -njljffrkrgnineone5fourtwo34 -9fsrnjjfkeightstjffdpeight -lz77jfdvgq -8skninektrzgsonesbnszbzsbfxgczgt -6lkmpnhjbsjeightvhfqnhtg -jmkrn89onenine4 -84xznbtgmsrg -twonineldsmg59five -z8vgkntnsmntqdhnphjppx8hfvptkrpbmjkg -1sixsixonemzjcbchdkeightsix6 -cnthtftdzhjxc9fivetwo -four99 -tsfhcrqthreecnsf49tnpjtvfjm -3vmrlbdone -fourtwoseven8klx8cjqnlf -5533 -96threesixbb8jcbtlhd -93mjghj -tpq7ninenine58 -twosxzrdncbhr5gnqv -8tgmmjxntmbdrtoneone4five -onehgnthree24 -4ninebrjplcxdthreekmzchvhpkm3zfkvbtp -sixgjrgcvhphv5threekgqtszxllxhdldzbv -krq9nine3fqhdvnrbmncseven6 -six85njxj3mmphzpv6dhqlkmptldvlflckgk -44eightxjtvfbmt -2fp9 -skjxglseven5nxfdgjlclv9 -zbmxptthreechlxvxszszztqqs4threefouroneone -47633nine -8584mrvjdspgmsevenfour8two -five5nzcmgx -4threenine19twonine -kztfivessbtzfjbmjmsnjxkct7 -2onesix -nine6kfpkqhkjzsknrldfcghcgkghnine -9cbhmrchmqjrhqx7zsdxmtlbrzfive7 -87eight16dmgpfcfvbt -three45sfourtwo3 -2xvmdthreeeightthree -zblpmvk2fivefqdjqpdk2eightwods -nvrngd1one642 -twoninesix8tvcm4 -sixjjrjrpjbdlsix5kscvgfour6 -oneninefjmblx25lgstzzkvnqcjl -5fournhphcqqzngvcjphfnhgr -fourninetwo226 -sqszqk8154five8eightnine -5rcqxrbv -3three7three118 -9dlgvvnpsjrhxjpjr -cgttwo97qceight658 -3eight8threefourthree8jvld -sixbctkcmzbtb4ntgtctgtr7three -36three92 -9twonezv -ddrhf7ninefiveonefivefive -4dpc75eighttwonine -27three -837ninethreezdcdbmjtph -two3jgj8pfptxbpjcfournine6 -r8mzqvthlnljthree2 -foursshmxt4qhsnxtwotwo3fpqhpd -ntlfvnxkxxvtktmbqfourqjzjdcdthree76ninetwo -7zfhfmqmbkzrknxcfgxmqh -zfzfcsbkld9eightthree -threethreebxqqsnfzvqfivefmnc71 -one3onesix63mxgmcpqfvnfiveq -9four7twofourtwotjlpcqeight3 -1dcnsvzrstslsqvcvonetwofour7 -cg12five -5twosxfsbmxrtl -seveneightsix3gshhcnjsqb5 -9xkvfhcmrs87 -lpkcnjpsix1fivetwo -9dsninefive6lhjpdkpcr -838mjxsleightnine -seven4ninefivefourhxplgzfvsevenbbdjqc -1drcgshkfthree3nlkztjtrx9five -7three4seveneightfxsz -7onetjjkznvlb -93two4foureight -8fqddclzvlx -tdpcspmg39ddqkdlpjxvkdtjpc21 -fivessmncpxsd3eight -44hjrhqdqf19pxkb -bmcgjkkkhfive5twonekc -twomv4nine -16rrksxjzjlt5plmvjtvhkfnineeight -cmczrnjjsntptjffzrpqthreemjpfhsjbrmnlkzpvvvmj8 -one81six -9jfivefive82rz -one32fourfivelkrczztone -seveneighteightfour1 -58twoxgklhpndxjrpb86 -five2sixfourcjfvnmhrxrtwovhrdrfrssphgtcqthhzxh -lxtbmsevenbms3one8dsbsixnine -sevenhcgr6ninefour -trknlxnv43zxlrqjtwonect \ No newline at end of file diff --git a/inputs/2023/02.txt b/inputs/2023/02.txt deleted file mode 100644 index cca5ee9..0000000 --- a/inputs/2023/02.txt +++ /dev/null @@ -1,100 +0,0 @@ -Game 1: 4 green, 3 blue, 11 red; 7 red, 5 green, 10 blue; 3 green, 8 blue, 8 red; 4 red, 12 blue; 15 red, 3 green, 10 blue -Game 2: 3 red, 1 blue, 2 green; 1 blue, 9 green; 1 red, 10 green -Game 3: 5 green, 9 red, 4 blue; 3 green, 7 blue; 12 blue, 3 green, 3 red; 3 blue, 7 red, 2 green; 7 blue, 3 green, 10 red -Game 4: 2 green, 2 blue; 12 red, 9 green, 2 blue; 13 green, 15 red, 4 blue; 14 red, 3 green, 5 blue; 6 red, 1 green; 1 blue, 2 red, 2 green -Game 5: 2 green, 6 blue; 1 red, 3 green, 5 blue; 3 green, 4 blue; 3 blue, 5 green, 1 red; 5 blue -Game 6: 5 green, 1 blue, 3 red; 8 green, 15 red; 16 green, 5 red, 1 blue -Game 7: 1 blue, 3 red, 11 green; 18 red, 16 blue, 5 green; 13 blue, 5 green; 1 red, 8 green, 15 blue -Game 8: 1 green, 14 blue, 1 red; 10 blue; 1 green -Game 9: 4 green, 12 blue, 1 red; 14 blue; 2 blue, 4 green; 4 green, 1 red, 10 blue -Game 10: 11 green, 9 red; 12 red, 9 green; 5 red, 7 blue, 5 green; 6 green, 1 blue, 12 red; 3 red, 3 blue; 16 red, 9 blue, 7 green -Game 11: 11 green, 1 red, 9 blue; 2 red, 13 green, 5 blue; 5 green, 2 red, 5 blue; 5 green, 7 blue; 1 red, 5 blue, 1 green -Game 12: 5 green, 1 red; 1 red, 4 green; 1 blue, 12 green; 15 green, 4 blue; 4 blue, 19 green; 16 green, 4 blue -Game 13: 1 red, 9 green, 5 blue; 10 blue, 7 green, 1 red; 3 green, 2 red, 14 blue; 16 blue, 3 red -Game 14: 9 red, 1 blue, 2 green; 16 blue, 7 red; 2 green, 3 red, 14 blue; 1 green, 9 blue -Game 15: 6 blue; 4 blue; 1 red, 16 blue, 3 green -Game 16: 14 green, 5 red, 1 blue; 1 red, 1 blue; 5 blue -Game 17: 1 blue, 1 green, 3 red; 2 red, 2 blue, 2 green; 1 blue, 1 red; 1 red, 2 green, 2 blue; 2 blue; 1 green, 2 red, 1 blue -Game 18: 4 blue, 2 green, 1 red; 1 green, 1 red, 10 blue; 1 green, 1 red, 2 blue; 1 red, 5 blue; 3 green, 6 blue; 1 red, 1 green, 7 blue -Game 19: 1 blue, 13 green, 12 red; 7 blue, 2 green, 1 red; 1 blue, 3 red, 3 green; 3 blue, 8 green, 10 red; 7 blue, 2 green -Game 20: 1 red, 17 blue; 10 blue, 5 green; 9 green, 1 red, 3 blue; 1 red, 5 green, 1 blue -Game 21: 3 red, 6 blue, 5 green; 4 blue, 1 red, 7 green; 6 blue, 4 red, 9 green -Game 22: 11 blue, 2 red, 6 green; 16 blue, 5 red, 6 green; 12 red, 2 green, 10 blue; 14 blue, 2 green, 11 red -Game 23: 3 red, 5 green; 10 blue, 1 green, 9 red; 2 red, 10 green, 9 blue; 9 blue, 7 green -Game 24: 8 blue, 1 red; 3 red, 9 blue; 9 green, 2 red, 8 blue -Game 25: 2 red, 1 green, 1 blue; 1 green, 12 blue, 2 red; 2 red, 1 blue; 2 blue; 1 green, 10 blue; 6 blue -Game 26: 2 red; 4 green, 1 red, 7 blue; 11 blue, 2 red, 4 green; 1 red, 1 blue; 1 red, 5 green, 12 blue -Game 27: 1 red, 7 green, 8 blue; 13 green, 12 blue, 1 red; 6 red, 1 green, 10 blue; 8 red, 2 blue, 2 green; 11 blue, 4 green, 4 red -Game 28: 1 red, 8 blue, 3 green; 12 green, 4 blue; 1 red, 4 blue, 11 green; 7 blue, 10 green, 10 red; 11 blue, 7 red, 8 green; 10 red, 2 green, 2 blue -Game 29: 4 green, 2 red; 1 blue, 11 red; 2 blue, 3 green, 1 red; 16 red; 3 green, 8 red, 1 blue; 2 blue, 7 green, 12 red -Game 30: 1 blue, 3 green; 4 green, 2 blue; 3 red, 5 blue; 4 green, 1 red -Game 31: 2 red, 2 blue, 3 green; 2 green, 3 blue, 8 red; 7 red, 16 blue, 2 green; 5 red, 20 blue, 2 green -Game 32: 2 red, 1 green, 4 blue; 4 green, 4 red, 1 blue; 4 red, 4 blue; 1 blue, 4 red, 2 green; 4 blue, 3 green, 4 red -Game 33: 11 green, 4 blue, 10 red; 2 green, 13 red, 7 blue; 13 red, 2 blue, 8 green; 15 red, 9 blue, 12 green; 14 red, 10 green, 2 blue; 13 red, 7 green -Game 34: 11 red, 6 blue, 4 green; 16 red, 7 blue, 4 green; 6 red, 18 green, 6 blue; 3 blue, 16 red, 3 green; 2 red, 3 blue, 17 green; 3 green, 9 red, 6 blue -Game 35: 6 green, 10 red, 12 blue; 4 red, 1 blue, 2 green; 3 green, 8 blue, 7 red; 6 red, 12 blue, 2 green -Game 36: 4 green, 2 blue, 2 red; 3 green, 10 red, 1 blue; 1 blue, 3 green, 2 red; 2 green, 1 red; 1 blue, 5 red -Game 37: 3 blue, 1 red, 2 green; 8 red, 4 green, 10 blue; 4 red, 4 green -Game 38: 13 green, 3 red, 2 blue; 1 red, 13 green, 2 blue; 20 green, 3 red, 2 blue; 1 red, 2 blue, 12 green -Game 39: 13 blue, 1 red, 8 green; 5 red, 3 green, 8 blue; 6 blue, 4 green; 18 blue, 7 green, 1 red; 4 green, 3 blue, 5 red; 6 blue, 4 red, 1 green -Game 40: 2 red, 2 blue, 9 green; 1 blue, 2 red, 12 green; 16 green, 11 blue, 1 red; 1 green, 2 red; 3 blue, 2 red -Game 41: 7 blue, 1 red; 4 blue, 1 red; 3 blue, 1 red, 2 green; 13 blue -Game 42: 18 red, 1 green, 13 blue; 2 blue, 2 green, 7 red; 16 red, 12 blue; 1 green, 10 blue, 14 red -Game 43: 15 red, 6 green, 2 blue; 3 blue, 9 red, 3 green; 13 red -Game 44: 2 blue, 5 green, 3 red; 4 red, 4 blue, 19 green; 5 red, 3 blue, 9 green; 19 green, 6 red, 5 blue -Game 45: 5 red, 4 green, 13 blue; 12 red, 10 blue; 3 green, 9 blue, 5 red; 10 blue, 18 red, 5 green; 16 red, 6 green, 17 blue -Game 46: 3 green; 3 green, 2 blue; 4 blue, 2 red, 3 green; 5 blue, 3 green, 4 red; 1 green, 1 blue -Game 47: 2 blue, 1 red, 10 green; 2 red; 6 red, 1 blue; 16 red, 2 blue, 8 green; 5 blue, 8 red, 7 green -Game 48: 11 green, 4 red, 2 blue; 2 blue, 5 green, 8 red; 9 green, 6 red; 3 red, 3 green, 1 blue; 2 blue, 12 green, 17 red -Game 49: 10 blue, 4 green, 1 red; 10 red, 10 blue; 12 blue, 7 red; 13 blue, 6 green -Game 50: 1 red, 19 green, 7 blue; 4 red, 1 green, 5 blue; 16 green, 8 red, 8 blue -Game 51: 12 green, 18 blue; 13 green, 14 blue, 4 red; 7 green, 4 red, 14 blue; 8 green, 2 blue, 3 red; 16 blue, 8 green -Game 52: 9 blue, 9 green, 3 red; 8 blue, 1 green, 13 red; 2 red, 8 blue, 9 green; 13 red, 4 green; 6 green, 15 red; 11 blue, 11 red, 9 green -Game 53: 2 red, 4 green, 3 blue; 5 blue, 16 green; 4 blue, 8 red, 12 green -Game 54: 6 red, 16 green; 6 red, 15 green; 8 green, 8 red, 2 blue -Game 55: 9 red, 2 green; 4 blue; 2 green, 2 red, 7 blue; 1 red, 16 blue, 1 green; 17 blue, 5 red -Game 56: 14 green, 3 red, 9 blue; 14 blue, 15 green, 2 red; 8 red, 13 blue, 15 green; 15 blue, 2 red, 12 green; 3 red, 7 blue, 10 green; 10 blue, 13 green -Game 57: 1 blue, 10 green, 2 red; 4 blue, 9 green, 11 red; 2 blue -Game 58: 4 red, 2 blue, 5 green; 1 blue, 5 green, 4 red; 3 green, 4 red, 8 blue; 4 blue, 7 green; 5 green, 4 blue; 1 blue, 6 red -Game 59: 5 blue, 4 red, 3 green; 8 blue, 12 green, 5 red; 5 red, 8 blue, 15 green -Game 60: 6 red, 12 blue, 1 green; 10 blue, 20 green, 4 red; 6 blue, 1 green, 5 red; 9 red, 12 blue, 14 green; 15 green, 1 red, 14 blue; 10 green, 13 blue -Game 61: 1 blue, 12 green, 3 red; 4 green, 1 red, 4 blue; 8 red, 4 green, 6 blue -Game 62: 6 blue, 7 green, 3 red; 6 blue, 3 red, 3 green; 11 green, 6 red, 2 blue; 2 red, 6 blue, 3 green; 2 green, 3 blue, 3 red; 3 blue, 11 green, 11 red -Game 63: 5 green, 6 blue, 4 red; 6 green, 12 blue; 3 green, 9 blue, 10 red; 1 blue, 4 red, 5 green -Game 64: 10 green, 14 red; 1 blue, 9 red; 3 green, 10 blue, 14 red; 5 green, 3 blue, 12 red; 5 blue, 12 red, 13 green -Game 65: 1 red, 5 green, 10 blue; 14 red, 5 green, 10 blue; 10 blue, 10 red -Game 66: 9 green, 8 blue, 1 red; 8 red, 14 blue; 8 red, 7 blue, 2 green; 4 blue, 3 green, 5 red; 2 red, 8 green, 8 blue -Game 67: 4 red, 3 green, 3 blue; 4 green, 1 blue, 4 red; 1 blue, 3 red; 10 blue; 16 blue, 6 red, 4 green -Game 68: 6 blue, 6 green, 9 red; 4 blue, 9 red, 3 green; 3 blue, 8 red -Game 69: 4 green, 12 red, 3 blue; 2 red, 3 blue; 2 blue, 4 red, 2 green; 1 blue, 3 red -Game 70: 4 red, 3 green, 15 blue; 1 green, 4 red; 1 red, 1 green, 5 blue -Game 71: 4 blue, 2 red, 10 green; 7 red, 6 blue, 11 green; 4 blue, 7 red, 8 green -Game 72: 9 red, 9 blue, 1 green; 4 red, 6 green, 5 blue; 3 green, 7 red, 2 blue -Game 73: 3 green, 9 red; 4 green, 15 red; 12 red, 2 blue; 14 red, 3 green -Game 74: 2 red, 6 blue, 1 green; 3 red, 6 blue; 1 green, 12 blue, 14 red -Game 75: 3 green, 18 red; 1 green, 7 red, 1 blue; 2 red, 2 green, 3 blue; 11 red; 2 red, 3 green, 2 blue -Game 76: 6 green, 2 red, 5 blue; 13 green, 5 blue; 5 blue, 1 red, 1 green -Game 77: 4 blue, 6 green, 3 red; 15 red, 1 green; 4 green, 11 red, 13 blue; 8 blue, 6 green, 9 red; 3 blue, 1 green, 11 red; 3 green, 3 red -Game 78: 11 green, 1 blue, 2 red; 7 red, 16 blue, 11 green; 9 blue, 10 red, 6 green; 1 green, 8 blue, 10 red; 8 blue, 6 red, 1 green -Game 79: 2 blue, 5 green, 4 red; 1 blue, 1 red, 1 green; 1 blue, 5 red, 10 green; 6 red, 3 green, 3 blue; 8 red, 9 green, 6 blue; 7 blue, 6 green, 13 red -Game 80: 10 green, 7 blue, 5 red; 5 red, 1 green, 6 blue; 8 blue, 2 red, 8 green -Game 81: 3 green, 10 red; 6 blue, 8 green, 14 red; 4 green, 4 blue, 13 red; 5 blue, 11 green, 6 red; 16 red, 8 green, 5 blue; 6 green, 18 red, 6 blue -Game 82: 13 red, 1 green, 7 blue; 8 green, 4 blue, 12 red; 18 red, 5 green, 3 blue; 13 red, 4 green, 9 blue -Game 83: 1 red, 3 green, 4 blue; 5 blue, 4 green, 1 red; 3 green, 1 red, 12 blue; 4 green, 11 blue -Game 84: 3 blue, 10 green, 2 red; 3 red, 8 blue; 11 blue, 12 red, 14 green; 2 red, 11 green, 2 blue -Game 85: 8 blue, 2 green, 1 red; 13 blue, 6 red; 3 blue, 5 green -Game 86: 16 red, 8 blue; 7 blue; 16 red, 16 blue, 1 green; 15 blue, 11 red; 2 green, 7 red, 5 blue -Game 87: 6 green, 9 blue, 4 red; 1 red, 1 green, 4 blue; 5 blue, 13 green, 3 red; 2 green, 4 red; 16 blue, 10 green, 3 red -Game 88: 1 blue, 14 red; 14 red, 3 blue, 8 green; 1 blue, 5 green -Game 89: 12 green, 14 blue, 3 red; 2 red, 3 blue, 3 green; 2 blue, 8 green; 1 red, 3 green, 15 blue; 3 red, 5 blue -Game 90: 3 blue, 17 red, 11 green; 2 red, 2 blue, 7 green; 7 blue; 8 blue, 4 green, 10 red; 1 blue, 4 red -Game 91: 10 red, 9 blue, 8 green; 5 blue, 10 red, 2 green; 11 red, 17 green, 7 blue; 12 blue, 16 red, 18 green; 20 green, 5 blue, 15 red -Game 92: 1 green, 14 red, 1 blue; 2 blue, 6 green; 9 red, 6 green; 5 blue, 5 red, 2 green; 3 blue, 3 green, 10 red; 5 blue, 1 red -Game 93: 10 green, 1 red, 6 blue; 16 red, 5 blue, 2 green; 3 red, 7 green, 11 blue; 12 green, 5 blue, 4 red; 8 green, 7 blue, 10 red; 1 red, 5 blue -Game 94: 3 blue, 1 red, 3 green; 1 blue, 4 green, 4 red; 9 green -Game 95: 3 green, 5 blue, 9 red; 2 green, 9 red, 2 blue; 12 red, 9 green; 11 green, 9 red, 9 blue; 9 blue, 6 green, 10 red; 13 red, 2 blue, 5 green -Game 96: 2 red, 19 blue, 2 green; 10 blue, 1 red, 2 green; 9 blue, 1 red; 2 green, 3 blue; 1 green, 1 red, 11 blue -Game 97: 6 green, 7 blue, 5 red; 7 green, 1 red, 11 blue; 6 green, 6 red, 5 blue; 2 red, 9 blue, 1 green -Game 98: 5 green, 8 red, 15 blue; 16 green, 9 blue, 8 red; 5 blue, 3 red, 2 green; 13 blue, 12 green, 4 red; 2 red, 15 green, 3 blue; 1 green, 11 blue, 2 red -Game 99: 1 green, 7 blue, 6 red; 16 blue, 9 red; 1 green, 17 red, 12 blue; 15 red, 7 blue; 8 blue, 14 red -Game 100: 5 blue, 11 red, 6 green; 11 red, 2 blue, 5 green; 6 blue, 6 green; 2 blue, 6 red, 15 green; 7 red, 4 blue, 7 green \ No newline at end of file diff --git a/inputs/2023/03.txt b/inputs/2023/03.txt deleted file mode 100644 index 2794787..0000000 --- a/inputs/2023/03.txt +++ /dev/null @@ -1,140 +0,0 @@ -.........426.............985.........40..........207............................841..463................................633........17.384... -531&......+..........125....-..312..........#........895......998..945.....@......$.....-...33...................353.....*........*......... -........................#......*...........21..727..*..../..-./.............545......80...................602......@..272.......743......... -...........558.577..........486...186*925.....*....483.883.1....286...................................625..................#474.....491..... -..............*.........243.................287................*............$....245............830.........793......#..........306..*...... -238.685.................*................#.........%........807.........28.947.................*.....705.....*....573...500*781...#..496.... -..................989..923.......713...539......917.................115..*.....-...........662.........-......413........................... -...........=......*..........886.*.........................442......*...........398........*.............%.............636...........%...... -............976.413...498..../...266........796....................87.....................969.881..&.....815...........*.....279....415..... -......728*..............*..............129..........670...890.....................760...=.......@.832........227.....632.212*............... -..........257.....712.491....-41...........970........*....*...373........742.......*....330....................*.....................814... -....................*..................415......406..441..35..../.........-..........828.........................239.....@...533*206........ -......687.........834......448...658...*..........&..................467*..................244.......+332....*..........35..............*... -.............453.......616..*...........609.............662......672.....56........661.602*...............549.661...................141..73. -.......699...*.........*...904..........................&..........*...@..............................189..........$677.......473.....*..... -........*..670.........938.........267.......684...........514...211....875.........667..171.110&.426*......../...............*........29... -.....164..........................*....@786.*..........646.=.........43.......885....+...=.............641.....996...........117....28...... -.........*921....150*....635..973............587...346*......771........&3....+....................=................................@....... -......962............821....*...*...........................$....174............391+......732*177...101.....146.............555............. -..........................117.965.........327.....................*../127.54.........354.....................*...37/.......&....56....656... -.335.747*967..*469.................................-.....$.450..560...........553...+.......327*..........215.........950..............-.... -......................253%...........796.........267...946..*........&...583.-...........-......727.37........@....#....-.......337......... -.............-...............-.649.........-.................316..680......*.....982..398..................961......632...718......*..%..... -..........599.............876......700..617....344*138...611..........907........-...........................................*...291...209.. -.860...........................*......*......................850........*..............=....761...721*804...............%...33.............. -...*...........................61./....378........268....956..#..813@..191...610.168..216....$...............853%......826.................. -.757..=422.........................427..........+....%....=...................#.../..............908................@....................... -.........................172.................464...........................-.....................*.......667...931...131..@.........939..... -............456.....462....*.....985................801......933..464..641.874............*189..42.........................430..596...=..... -..............*....%........945.@........456....*23...........*..........*.............335.........889..557#....................*........... -....810.........65......382................#.532...............704......796...192....................@..........46...527......929........... -...=....%..................*433...........................925.............................................30.....*................617....... -.....792.......386.....................575...%859................................................................993...334*..........&...... -..........657.&.....&....................*.....................296.+513.............36..........267........703.............186.............. -......336...........443...#.....474......897.215*346.....100.....=...........+.812../......47.%....*444..&............128........-...196.... -705.............980......932.......*122..................*...........305..817..*......424.../.40.........193.210.736.*..../....&.512..*..... -...%...............*.....................................326..615.......*.......472..*...........350*201.......*..@....681...902......330... -...................907...303...........140*112.............../........93...875......339....361=.............730............................. -..............540...........*...................498.170.....................*....................#...757........241...............201....... -...359*42.....=.......309...561....528.....444.....*........570............................125/.379......707.......*........*285.$.......... -............%.........................*770.............253..*....515..926..................................=........45.946..............*... -....155..573..103.24..............................@......*...179..*........275......................*...................*................134 -....*............*......963...........444......801...656.796.....524.84#......*433.......997.....122.500....711.......447................... -..80.........992..........*............*...+..........*....................................*.................*...............$.....894...61. -........183..../.......492..955....+.222....519........373....=......304........151.........691..............655......223....37......*...... -.........$...................&..221................859.....929.......*...398.......*......-......591.....&.............$..........134....... -................960......264........./..............#..............508...@........118..449........*...907......=791......................... -...........239....#.....=...........248.531...................@..................................696.......741...................50..174.... -.....=......*............................*.....506*809.....796.....906.....=...........17*...........51...*.......................*..*...... -...520...198...781....253..............957.222.....................*.....216..............513....959*....638.312........172.318......514.... -...............*.........*239...............*.....%.....923.........852..............414+............../.....%...104.......*.............936 -.....221.....116.....712...........201...346...475.........*...............&..............745....109..202...........*....................... -....*............957*.....$....353...............................171....468....%..........*.........*.........906..593..592#......&316...... -.........232...........251....#.......%.......................$...*...........179..904.....365.....331..541..*.............................. -...................................856..........412..-....844.877..871....*.........../.................*....416...........810*685..776.969. -.158.......@......319........681..........780.#...+...428.*............650.241....@....................................123.............*.... -....%....826......@....%.688*.......983../....723.........892...................270.....234....*......443...970...........*................. -....................314................*.................................................*..=...588......*.....%........225...496*732....... -...344+........................644......413.997....553...................................87.282..........943........866..................... -..........*563....910......267..*..546........*.....*..................60.............+..........421*739.............*...251.169.605........ -938.....52...........*761.*....762............335....842.....................44/.......528..........................77......*.......*201.... -..........................597......$.....................896.....543.76.........................938./707...............8........982......... -...894..195.......310*986.....=54.854...553................#.......*...*..192...127..566*768..........................*....850...*..970..... -.....*..................................=...835...874...........663...65..*.....*.................*947..539.12...947.485.....*..749..*...... -......34.378........$............#.........*......*......922...............947.598..880........723.....*....*...@..........791........18.... -..165.............388..94.......863........132.184..973.*.......58.................*......226..............618.....................=........ -.....*.............................................@.....154.............240..34.297.......*...........429.....625...............672........ -......619...#............641*520.340.918............................../..@...............390......502..-..../.*.....164....789........984... -.............933.....................*.....838..240..400&..........288.......196..109............*.......749...513........*.......751...*... -.....709.....................881..905.........*....*.....................643..*.....@...114...608......................190..........*....993 -...............109...........*........368..123....98...501.....691..410-...*.126......................92........+..546...........219........ -..................*......18..70..296.....*..............&..987..*........235............8.............././...828...*........................ -.151.............551.153*..........*.....883...............*.......*833........497..287*..427.377%.428...910......448.598.....334..53..619.. -..........589.......................723.........832.131..705.............................#............*.................@......*...*..*..... -..........*........794*686......790...............*..........192..............................970......612.546.98............942......941... -....223.686..............................547...665.......396..*.....210......408.322..839.......*..557......*...+.................521....... -.....*.......170...........166.....390..............100.....*..921....*.........*.....+........984....*..450..........639..../....*...296... -...372..........*760...266.*...600*......999.........*...906........................#....632.......469........250.......*...422..643....@... -..............-........#...911......494...*...355...159.......................848..676.................../.....*......35.................... -......81$.....544..67...............*.....159....*............209.747*29........./..........812.........430.232...................199*587... -760.................*...#........331.................%...158...................#.....................29.................596...477........... -..........%./....922...388..970...............510...68......*....590....545...621...-..977.593..889...*.........................=..879..*389 -....163.618.370..............................*...............946..................332....*.......&..&..837.658......................*....... -.............................835.....129...566.....690.237..............#.............$.....386....36......#......411.....52..733...783..... -.........670...978.84...........=......*.......991*....*....632.......957...52.......548.....&....................*.........-.*............. -....920....*..*.....*...............949..............482...*......812........-...413.....201................663.286.....-......424...296*630 -........992...307...634.................716..287.........811.....+........4......*...413*.........896......*...........84.52................ -.........................253.............................................*.....459..........926..*.......446..............$.......175....... -.........................*.......168-.....781*......344.........85......373..........224.....*..393.545........749%.643......-..%.....968... -...*776../145...&.....140..........................*........578*........................#..45..........*............/......596..639......... -415............393..................988...........878.22..............909..........284...............173...564*48.......33.............444.. -........259..........%.....207-........*631...........*......669*...................*...........282......%........%.....*................... -.130................119.....................422......440.........461...-154........575.............$.=....329...180..576.....367............ -...........618...............=.../..538$.......&............493*............729..........903.........82.......................*............. -.............*............541..124.........627........806*......666.703.146*...........*.%..............-.....................142........551 -...#..3......660.....................*........*.......................*......./164...498..............872.621....991........................ -174....*...............683..542*.....960.....782.....755............557../.....................#282.......#.........*409.103.......943...... -........231.891...........*.....782.....................*992.............492......69.......610...............+...............557......*..... -............*...964.104.289..........853......691..830.......&.....................*...870.*.............77..189.310*...............583..... -....449....435.*....../........732+.=.........*...*.........238...161.....688......675..*...934......................891.................... -...............21.......................239........430..........@....*.....@..376.......205......790........................73..334...598... -......863-................474...339.....*.................765.534.116...........*..................*..........@.......513...-....%...../.... -.262..........#......785....*..$....915..622....440$.&416.*.............143...34..45....515#....448...........268........*.................. -...*..+.......844......*.142..................*...........666.......266...*......*...................236..............439......338.496...285 -647...393...........236.......218..........819.779...+................./.........765...................*.......292.........$......*......... -..........................257....*.................274.........247...........951........................121........391....817.../........... -........742..................&....98...................628....*.................%.168..........539............................701........... -.......................659................................*.622...868.............=...713.357....*.298....917...781......................... -.....467....382..899......*819.....952*388..............684.......*.....................*.....558...%....%...............$..*.....60..615... -.....*.....*.......*............-..........604.................85.76....%893.866.&...784.....................$423.....334....935..*....*.... -..154....424......583.......8....926...$............$441.....................*...50...............=....155.......................599..115... -.............%............-...........96.506..846.................152.....985..........589.......384...@...44...............560............. -.............161...%167..906..901.........*......&....92..+610.......*247.............*...................*...........330..*....92.......... -....26.........................*...........523........*......................190...711.......*..........302.690.........*.986........714@... -........154.....................763..59..............305..560...726......79...*...........521.160..159................81.................... -991.339*........-.........434..........*....................-..*.........*..626....................*..............692......+................ -..............448.....96./...........782............353........949.....655...............752.522....905...964#......-.683..83............... -.......=..........127../.........$....................../.......................................*......................+.........671........ -.783..14...........*...........746....271.38............666..................513..37.....=984.824....@....$..463.................*...154.... -.................60..892..304............*....354*20.................99.........*..%.351............367..914.*....622...........310...*..194 -.../.....339............*......318..........6.................329*...*..240.....76...*...45....*..............601......+.............211.... -.700...../...925......616...........*56.570.$...970...751...........556..%..958.....50..*...667........63...........793..................... -...............................8.........*........*......*854................*.........304........324.....%..................*.....213%..... -832...............%....$.........572......303.....872.=.............822.....2...434........%..76.@......34...866.684*.......571..........756 -.....922........908.811......792....#.967..............432..............304......+........676......314........*..................364....#... -........................=.....*.........*.......39............127.........*........27..............+.........937.172.....532*......&........ -....*.............156....626...667......151..../.......................776..846...*............562.....254$......../..@......297.......751.. -..457.213.....403*....=......................#.......656.....546%..............*.......*866......+...................954.576...........%.... -.........*..........227........364....752..977.231..*...........................739.610...................................*...730..#........ -......838......645........$692.................*....170...............906........................149.....578..470.........981.....310....... -959...........*....447.................33.513...412..........784.......*....................365.....%....*.................................. -...../......593......*....=..965..=907...*.............................482.....................*.......915..............327...529.....425... -......613.........%.490..971.-..............&542..............................695.......803.....917........446.....53...*........*455..$.... -...............258..................+..303+..........................517....7*....598..@....472.....224...*............903..#............... -........................724...+....575........312...&.........................................*....*......628........@.....108.............. -.....343.374.......$....*....675...............%...371......409.....502.928.135...482.384....195...59.............144..982........787....... -....*....*.......289..729..........990....................../.........+.......*..*......*...............*.@...........#.............+....... -....147...613.............*534.........938....882...740.518.....994..........800.222..933...836.......260..339.=...........628.$935...../... -...............726.....308.............%........*...../.+........=..../146.................*...................509..........*........593.... -930.........................823..............994.................................100.....857.......................708.220.184.............. \ No newline at end of file diff --git a/inputs/2023/04.txt b/inputs/2023/04.txt deleted file mode 100644 index 273bb78..0000000 --- a/inputs/2023/04.txt +++ /dev/null @@ -1,202 +0,0 @@ -Card 1: 34 50 18 44 19 35 47 62 65 26 | 63 6 27 15 60 9 98 3 61 89 31 43 80 37 54 49 92 55 8 7 10 16 52 33 45 -Card 2: 90 12 98 56 22 99 73 46 1 28 | 52 77 32 8 81 41 53 22 28 46 48 27 98 1 94 12 99 72 84 90 92 73 24 63 56 -Card 3: 48 10 39 87 23 78 49 40 55 8 | 48 80 78 87 39 24 27 19 41 73 30 52 10 2 67 40 88 53 59 84 55 49 5 33 82 -Card 4: 21 45 91 26 64 51 42 84 11 94 | 55 56 36 65 84 2 68 44 52 58 86 6 33 7 97 40 30 14 39 80 82 57 79 1 10 -Card 5: 33 6 67 89 64 31 85 11 2 15 | 6 70 29 89 12 11 64 80 7 82 46 16 33 68 48 72 31 2 99 15 67 57 4 49 85 -Card 6: 51 20 11 66 38 39 69 48 25 74 | 39 74 3 86 19 25 21 55 2 38 46 60 66 82 51 11 98 88 8 48 49 94 20 69 72 -Card 7: 4 50 82 51 52 77 12 11 57 42 | 56 11 73 69 42 82 32 77 52 98 12 51 36 94 46 4 50 39 85 90 93 70 18 71 57 -Card 8: 96 31 27 93 7 8 6 23 15 72 | 55 79 86 4 6 35 12 27 95 29 73 81 87 43 7 13 62 15 72 71 58 48 63 94 89 -Card 9: 16 90 79 29 93 31 40 24 82 88 | 86 16 73 20 22 93 83 39 36 90 79 72 40 29 35 97 88 12 8 24 31 82 21 59 95 -Card 10: 17 36 50 39 96 43 41 38 55 8 | 39 93 38 96 56 27 4 72 17 87 99 78 75 11 55 41 43 68 64 28 50 40 8 36 97 -Card 11: 76 96 78 64 80 28 11 24 93 97 | 66 34 64 35 97 47 54 13 79 11 67 24 36 28 17 30 82 93 21 49 4 86 76 12 8 -Card 12: 16 73 39 24 54 90 89 55 11 25 | 17 92 1 61 86 2 25 7 50 55 88 74 64 83 24 48 39 84 54 32 58 34 89 28 99 -Card 13: 66 99 94 51 17 67 73 32 76 86 | 97 61 50 64 57 41 39 89 60 13 43 72 44 83 84 18 87 20 92 48 75 8 82 36 53 -Card 14: 3 56 26 47 68 66 22 20 27 77 | 75 22 63 26 55 66 3 73 47 90 44 64 76 4 92 19 91 62 51 77 58 17 2 40 52 -Card 15: 91 1 44 6 51 43 61 5 12 31 | 49 97 10 78 87 95 36 56 96 46 4 14 43 54 94 81 41 67 91 11 83 38 93 22 86 -Card 16: 61 46 35 13 79 38 80 3 95 87 | 80 98 46 74 28 26 84 73 75 57 52 91 40 44 2 51 95 77 3 96 35 67 41 55 79 -Card 17: 50 89 17 18 60 81 37 29 3 52 | 13 19 83 98 77 25 97 52 10 35 94 99 50 6 27 84 41 11 33 34 20 4 54 89 56 -Card 18: 57 1 68 3 86 40 15 2 38 41 | 88 96 18 25 16 15 12 47 37 27 39 48 32 43 33 82 60 13 57 53 40 61 26 99 5 -Card 19: 30 48 3 82 23 91 41 63 99 16 | 78 6 46 54 22 85 7 49 59 53 68 12 70 97 77 92 56 41 83 5 75 37 58 61 28 -Card 20: 28 5 15 55 66 24 25 93 6 22 | 94 68 4 2 98 37 76 71 78 21 47 67 97 51 99 3 57 89 95 30 26 60 12 9 11 -Card 21: 90 98 42 76 23 83 8 29 5 50 | 93 13 90 19 25 61 97 39 99 73 40 38 6 72 65 43 91 20 33 86 55 62 47 1 84 -Card 22: 14 49 50 4 1 13 65 30 10 51 | 26 40 32 73 16 93 94 22 59 76 89 27 33 44 87 42 74 3 71 47 67 6 12 43 57 -Card 23: 29 57 10 79 78 30 86 69 32 72 | 26 8 96 78 51 90 86 19 3 10 57 29 22 72 35 28 97 34 69 38 79 33 93 32 30 -Card 24: 99 66 67 60 23 90 73 1 29 77 | 79 80 74 63 27 68 12 81 19 91 28 56 71 38 24 35 18 4 87 13 62 3 34 44 14 -Card 25: 87 8 39 28 6 89 34 17 51 25 | 50 37 16 36 90 60 28 17 84 70 32 22 64 61 6 34 24 56 99 89 40 77 47 68 87 -Card 26: 42 82 14 23 59 8 62 53 37 2 | 62 8 14 85 76 53 21 60 79 1 90 19 78 82 42 17 11 49 87 13 59 37 81 2 23 -Card 27: 75 95 56 30 17 58 61 11 39 93 | 68 73 94 9 11 86 80 22 61 50 75 62 36 98 17 39 89 93 34 56 30 78 95 58 96 -Card 28: 10 54 26 76 5 35 81 67 34 28 | 28 88 89 93 76 35 81 94 26 98 10 84 67 5 65 50 57 34 54 82 4 45 62 24 53 -Card 29: 6 40 97 56 4 43 98 55 79 72 | 79 15 43 54 97 4 95 42 40 57 82 91 87 86 68 63 19 1 22 72 7 67 10 84 55 -Card 30: 22 85 5 42 74 28 1 63 29 53 | 63 86 80 48 13 2 74 85 25 97 5 43 21 53 88 7 38 29 82 3 30 77 51 11 44 -Card 31: 11 69 64 47 44 13 50 33 83 53 | 59 9 57 81 98 69 32 40 11 33 53 20 52 12 37 93 79 64 74 80 71 35 44 7 13 -Card 32: 94 44 62 75 35 86 34 20 1 74 | 17 29 50 65 60 57 33 59 31 92 70 11 54 85 99 22 46 53 98 93 97 51 67 64 12 -Card 33: 90 55 21 9 10 41 24 51 88 70 | 30 77 78 20 32 1 57 92 15 75 21 37 31 43 60 39 72 54 46 99 53 61 50 33 94 -Card 34: 8 77 92 34 84 28 90 40 97 75 | 61 40 99 77 17 28 80 50 37 47 22 70 81 79 97 85 93 15 49 48 69 14 2 12 94 -Card 35: 44 61 20 43 35 24 45 53 52 47 | 46 54 93 78 87 31 30 80 23 51 13 99 60 57 38 9 1 19 90 71 70 26 40 97 62 -Card 36: 64 40 1 89 19 70 16 71 31 94 | 10 89 43 1 63 77 3 74 62 17 38 54 72 41 50 14 35 59 99 34 52 55 22 44 96 -Card 37: 74 56 86 52 37 58 30 55 79 9 | 49 28 37 12 97 61 19 36 90 45 48 21 86 58 96 82 9 87 66 44 35 77 81 70 22 -Card 38: 34 46 73 59 45 65 85 27 16 42 | 17 93 58 98 88 64 26 35 2 84 86 80 89 4 48 83 28 50 32 21 74 69 95 40 57 -Card 39: 51 82 59 67 24 8 32 23 96 40 | 76 40 59 83 65 24 4 29 88 21 82 68 95 64 10 1 62 37 81 32 74 47 56 63 48 -Card 40: 80 57 26 4 27 39 34 24 49 78 | 65 64 86 59 25 16 92 66 13 54 46 91 29 47 32 21 81 14 30 7 62 37 55 41 36 -Card 41: 12 70 15 72 82 43 53 21 58 51 | 7 56 3 30 36 45 28 94 67 89 39 2 48 47 24 29 16 20 22 18 41 37 49 93 77 -Card 42: 60 85 83 5 82 63 48 36 4 40 | 89 43 57 86 31 45 88 37 90 3 46 94 29 12 25 40 38 50 72 5 9 15 49 16 87 -Card 43: 33 94 66 90 14 72 73 59 55 15 | 87 34 37 35 4 77 25 80 54 10 86 6 12 48 60 61 36 55 43 64 97 30 41 5 95 -Card 44: 31 17 65 48 36 63 33 46 25 87 | 9 70 4 42 53 97 57 32 80 14 95 23 3 12 15 52 6 34 71 74 39 27 66 22 20 -Card 45: 88 52 86 36 5 15 65 61 18 17 | 36 96 32 56 1 80 48 89 95 97 60 91 85 21 82 10 3 75 66 93 51 37 28 23 83 -Card 46: 23 86 32 98 41 65 17 89 69 39 | 69 4 80 41 89 43 86 44 16 40 99 8 77 32 39 51 19 36 73 56 90 83 5 17 76 -Card 47: 80 15 87 14 9 27 40 44 60 8 | 33 27 15 67 34 8 14 58 37 80 40 73 38 87 84 55 94 60 9 35 42 46 4 79 44 -Card 48: 94 32 34 99 60 33 11 3 30 96 | 72 27 32 33 56 11 97 61 94 96 26 93 30 41 83 17 3 60 34 2 47 99 40 24 90 -Card 49: 53 60 74 44 36 88 64 45 8 34 | 89 84 68 79 30 67 75 76 21 53 26 72 51 85 18 44 7 25 60 74 64 17 37 88 86 -Card 50: 90 69 91 1 43 26 77 19 61 65 | 65 34 92 13 48 46 69 19 44 77 99 11 63 91 76 61 73 53 1 81 23 12 40 26 43 -Card 51: 22 94 42 24 28 37 61 88 86 12 | 5 31 3 34 56 82 70 68 39 91 53 22 16 81 71 54 99 41 44 90 24 37 12 27 61 -Card 52: 93 57 50 9 14 42 66 23 21 1 | 21 33 48 18 71 1 27 54 11 77 74 22 92 41 34 14 98 36 61 70 89 80 82 10 55 -Card 53: 21 12 1 93 98 69 91 8 4 89 | 80 7 1 68 92 32 83 21 76 20 63 33 28 73 43 12 56 5 15 40 89 52 16 22 9 -Card 54: 22 52 94 9 63 10 16 1 82 4 | 43 47 48 81 24 35 9 16 94 44 85 18 13 64 49 82 52 77 10 21 41 12 74 79 39 -Card 55: 71 92 42 84 19 43 13 54 1 88 | 73 23 32 18 52 38 35 81 45 96 92 15 57 19 55 43 51 12 7 88 62 69 71 5 53 -Card 56: 13 52 23 69 26 92 37 47 99 54 | 38 64 66 22 26 99 93 23 86 9 29 98 57 48 51 79 50 42 90 60 87 13 25 5 4 -Card 57: 62 8 38 58 6 99 10 14 72 94 | 29 56 27 53 61 77 95 39 24 46 19 40 30 31 9 93 78 91 79 25 20 4 12 67 87 -Card 58: 34 57 49 6 78 13 53 81 75 98 | 41 58 21 56 64 7 97 11 80 4 83 12 44 51 62 26 5 22 46 45 27 95 10 16 43 -Card 59: 86 27 78 51 67 90 10 44 85 87 | 13 66 32 54 65 92 91 55 53 47 5 11 64 49 18 10 8 16 23 9 12 29 50 70 61 -Card 60: 26 62 95 72 31 98 50 9 25 44 | 56 94 2 53 11 51 22 66 12 45 36 17 37 14 78 48 4 29 64 76 39 65 1 15 24 -Card 61: 47 54 93 76 68 98 64 15 53 22 | 70 19 86 7 44 45 5 39 30 38 6 83 33 15 3 51 49 29 98 37 56 21 78 60 90 -Card 62: 46 53 15 99 29 7 10 34 79 12 | 46 56 94 40 66 26 33 99 39 28 12 67 53 74 11 22 92 34 29 79 7 32 98 15 10 -Card 63: 44 3 92 7 24 33 23 31 10 12 | 23 1 96 92 72 33 86 4 80 68 25 12 40 45 17 29 94 36 81 44 61 83 10 24 19 -Card 64: 21 95 89 20 7 16 23 73 58 86 | 84 47 11 18 96 90 73 2 38 51 29 30 58 99 76 86 21 1 37 68 16 32 39 22 35 -Card 65: 15 42 28 50 91 52 73 79 70 45 | 98 70 45 19 4 46 86 11 68 96 41 58 39 7 64 15 50 89 28 72 47 17 40 27 79 -Card 66: 91 48 16 1 24 3 75 60 41 86 | 98 52 55 23 66 14 92 50 74 75 3 1 58 91 13 97 90 73 78 62 48 79 65 77 87 -Card 67: 74 29 43 82 93 73 58 98 3 8 | 32 63 13 60 49 73 18 74 65 78 97 92 29 23 43 5 72 35 48 99 3 15 93 52 64 -Card 68: 35 33 72 82 59 8 27 67 19 31 | 35 36 80 7 63 62 33 44 55 31 8 75 1 64 95 27 47 79 40 14 72 19 42 69 91 -Card 69: 96 20 45 65 51 91 49 30 79 78 | 58 73 89 36 32 69 81 37 20 60 42 76 29 25 75 65 30 86 19 26 66 34 31 99 8 -Card 70: 13 59 90 5 63 29 14 32 77 53 | 56 66 32 77 16 85 47 73 55 86 1 90 69 97 4 78 76 59 49 8 48 37 63 50 72 -Card 71: 9 31 29 5 50 37 71 94 78 53 | 28 80 53 55 39 58 42 86 57 81 83 64 95 43 69 51 65 20 75 13 30 70 50 63 5 -Card 72: 86 87 49 67 68 46 45 60 23 12 | 35 93 94 6 55 49 40 28 38 62 63 32 52 36 69 17 81 73 16 7 56 89 21 20 86 -Card 73: 80 81 75 68 33 79 94 53 8 25 | 9 47 95 99 85 48 62 17 44 77 31 12 1 70 86 34 75 83 68 87 88 96 78 4 18 -Card 74: 62 64 51 12 54 2 85 81 22 28 | 98 14 10 71 2 61 29 82 39 55 17 76 31 18 86 97 60 87 93 26 69 33 21 13 6 -Card 75: 96 50 88 5 16 85 7 27 51 58 | 94 80 41 53 93 20 83 45 61 40 72 95 97 39 26 32 91 70 99 3 48 62 64 79 86 -Card 76: 1 73 41 87 54 57 20 7 98 85 | 21 16 15 66 23 75 86 46 11 90 36 96 34 78 58 33 88 56 93 74 8 64 30 28 5 -Card 77: 91 50 88 4 58 31 20 6 24 44 | 10 61 50 55 62 47 75 78 80 88 93 4 41 59 95 91 58 31 24 70 22 20 6 12 44 -Card 78: 22 28 36 88 75 82 4 99 90 55 | 14 33 24 75 43 4 41 88 16 15 77 36 99 22 52 82 61 55 28 27 89 97 51 32 90 -Card 79: 96 3 13 91 24 65 77 1 44 43 | 13 43 24 56 6 3 77 65 61 5 41 73 44 60 21 96 74 72 19 16 1 52 37 91 46 -Card 80: 71 29 61 75 72 55 16 26 6 62 | 15 65 38 71 16 10 75 50 6 92 4 26 79 29 94 46 62 63 45 61 51 86 74 55 72 -Card 81: 34 57 14 90 99 97 44 31 73 64 | 38 47 54 86 50 4 46 48 14 43 16 15 82 27 51 8 33 59 17 55 84 57 44 19 12 -Card 82: 77 46 25 67 61 5 37 49 50 24 | 77 89 5 4 61 43 50 76 55 78 46 6 42 66 25 52 49 7 85 95 37 24 48 23 67 -Card 83: 66 30 35 68 10 67 18 14 52 59 | 6 37 16 61 95 66 91 54 79 50 97 21 2 33 74 29 80 77 1 59 41 31 10 13 9 -Card 84: 29 39 48 7 2 90 47 93 88 46 | 57 90 50 84 74 52 7 27 93 96 54 78 48 39 29 46 40 88 47 13 2 89 70 25 86 -Card 85: 91 93 84 76 7 1 96 60 98 67 | 98 88 10 21 91 27 93 44 1 67 79 7 58 87 47 30 76 96 20 60 2 84 41 73 54 -Card 86: 73 1 14 37 79 63 97 75 2 60 | 80 3 56 45 43 23 1 95 72 13 49 27 9 78 55 15 74 40 75 94 86 63 76 32 52 -Card 87: 76 35 41 4 25 97 62 99 77 98 | 93 35 81 77 37 76 88 98 53 38 4 48 25 23 84 97 2 49 46 99 42 1 41 95 62 -Card 88: 3 15 12 58 57 4 43 44 10 55 | 78 55 51 54 4 44 42 35 69 3 79 25 57 10 77 34 30 38 12 58 43 93 14 86 15 -Card 89: 4 99 45 58 49 30 59 21 25 13 | 73 43 99 85 74 13 30 58 45 31 21 52 25 49 29 4 6 62 19 92 39 16 18 89 59 -Card 90: 81 84 6 57 1 69 3 68 13 49 | 20 25 40 92 84 38 83 53 94 66 49 52 17 72 56 8 33 43 22 81 64 47 28 36 5 -Card 91: 68 97 58 96 34 66 61 81 56 90 | 25 28 51 34 59 40 64 96 97 48 30 90 63 37 89 74 16 87 81 5 1 54 66 57 62 -Card 92: 10 53 16 70 72 21 34 4 65 54 | 98 21 63 53 55 75 72 93 7 24 15 25 92 61 67 86 70 10 12 34 65 54 3 5 36 -Card 93: 77 45 87 88 72 16 51 26 99 23 | 42 36 65 78 52 92 2 44 9 83 58 37 20 99 57 94 3 66 22 93 86 43 1 17 75 -Card 94: 86 29 2 71 17 60 43 8 11 81 | 92 35 45 12 38 47 22 9 13 11 48 58 63 68 20 96 46 94 85 42 66 25 83 26 57 -Card 95: 41 71 40 45 4 50 15 94 69 75 | 99 37 47 74 95 19 5 54 20 36 63 23 4 38 28 44 3 83 80 67 93 49 84 6 40 -Card 96: 16 14 18 42 90 63 96 37 41 76 | 52 22 37 10 25 99 76 73 93 89 1 79 23 85 6 64 16 97 39 55 96 18 77 69 92 -Card 97: 32 69 95 78 91 75 76 45 43 79 | 8 89 34 49 55 71 3 23 83 2 61 68 31 35 46 87 42 13 45 18 25 47 28 39 86 -Card 98: 24 37 74 59 60 94 39 40 63 45 | 23 52 8 85 53 70 18 11 46 30 6 83 90 26 24 34 55 71 82 97 37 31 38 68 5 -Card 99: 98 5 72 42 44 82 65 57 81 54 | 61 95 32 6 37 43 33 35 49 85 10 17 52 71 68 20 83 58 77 36 69 50 96 38 23 -Card 100: 27 84 51 44 31 19 34 98 77 18 | 44 43 39 5 30 48 74 88 23 22 6 35 59 2 20 92 79 89 72 58 80 11 52 10 57 -Card 101: 82 38 31 7 27 6 19 20 3 94 | 75 77 95 65 69 15 52 16 34 32 66 9 28 12 22 73 44 61 70 30 88 72 71 45 18 -Card 102: 16 59 11 8 88 9 48 1 68 90 | 44 12 18 99 73 27 91 82 29 20 63 1 84 57 87 86 3 54 42 85 78 98 51 60 36 -Card 103: 84 77 29 61 67 60 23 89 19 87 | 48 1 84 7 87 15 32 81 25 67 38 29 23 45 9 89 61 88 55 19 50 58 3 56 64 -Card 104: 51 4 13 59 15 92 17 65 26 84 | 3 29 85 4 58 66 51 31 2 55 65 54 13 16 24 92 38 26 59 90 67 99 71 33 70 -Card 105: 55 58 37 46 12 74 62 16 47 26 | 16 64 46 68 47 56 72 73 4 66 80 58 35 12 55 37 74 62 26 60 69 75 13 63 33 -Card 106: 39 80 37 10 26 47 66 79 12 64 | 34 82 72 10 12 20 40 7 39 25 89 9 26 93 5 1 47 64 79 96 66 18 80 37 13 -Card 107: 95 28 45 60 91 73 11 23 26 94 | 16 26 8 58 83 90 31 44 80 50 30 11 97 70 89 37 60 38 41 69 55 99 28 65 45 -Card 108: 39 54 74 12 56 63 13 34 32 40 | 88 70 89 74 87 96 44 58 2 79 34 37 63 16 30 61 41 23 54 95 33 72 73 40 82 -Card 109: 98 96 81 13 69 5 73 50 76 47 | 20 49 30 80 76 50 31 81 66 74 3 86 12 73 5 64 47 34 15 9 25 13 24 96 79 -Card 110: 47 43 1 83 76 38 30 45 50 12 | 56 99 38 43 74 68 27 83 55 49 48 78 91 41 51 72 33 76 15 12 22 50 53 26 13 -Card 111: 51 68 7 71 30 79 14 26 59 66 | 11 16 79 30 26 7 27 18 53 45 68 76 15 87 77 92 57 62 71 14 10 59 66 78 91 -Card 112: 84 37 54 21 19 30 38 20 94 88 | 40 19 38 21 68 62 48 26 44 12 91 74 20 30 42 89 98 51 7 54 37 58 1 88 64 -Card 113: 91 41 56 30 18 47 74 45 17 9 | 87 77 68 93 88 56 2 1 69 41 36 9 47 33 13 44 18 25 70 86 45 8 32 91 46 -Card 114: 83 62 7 35 48 11 37 69 93 84 | 90 24 81 74 17 54 49 65 67 19 55 47 43 14 64 99 33 28 29 98 36 63 57 52 58 -Card 115: 44 84 39 20 33 59 31 34 8 95 | 31 81 39 7 16 92 35 53 11 97 59 78 10 80 91 62 54 29 65 3 75 47 26 24 63 -Card 116: 65 74 70 33 44 56 13 10 85 63 | 11 20 54 17 73 41 24 79 18 92 43 76 88 39 95 80 7 75 36 52 94 35 78 31 4 -Card 117: 34 82 96 60 48 66 6 37 14 98 | 89 64 6 95 11 54 66 17 45 10 83 98 63 15 1 55 52 68 60 94 79 22 85 57 39 -Card 118: 20 80 46 41 97 57 99 56 64 91 | 48 61 98 11 95 50 62 81 10 79 22 32 37 71 43 19 36 58 29 9 16 64 65 17 96 -Card 119: 96 42 71 23 45 73 84 94 51 77 | 68 35 22 56 81 54 47 3 77 50 73 51 90 29 82 4 52 8 66 76 15 92 65 24 14 -Card 120: 56 34 70 85 68 77 79 94 84 73 | 1 82 60 23 78 10 58 29 26 70 93 2 88 87 4 33 44 69 47 12 48 6 54 41 96 -Card 121: 60 85 78 83 68 26 62 65 91 69 | 97 63 12 4 9 46 5 10 52 99 24 74 40 95 35 79 23 39 45 17 38 85 59 69 89 -Card 122: 48 51 12 57 61 41 98 22 11 37 | 27 24 95 81 20 73 92 31 32 68 6 63 38 40 83 56 96 62 99 7 30 11 85 75 46 -Card 123: 47 62 78 39 69 77 2 43 83 36 | 28 89 49 13 40 70 22 16 23 19 57 61 14 51 44 53 91 50 64 66 33 18 8 15 79 -Card 124: 22 28 12 21 40 57 84 5 87 46 | 67 46 31 64 58 22 76 75 37 82 70 21 87 69 13 3 12 5 84 28 14 57 95 61 40 -Card 125: 54 74 63 95 39 93 11 81 24 69 | 39 67 71 19 81 84 53 66 51 74 40 63 17 49 95 3 44 11 9 72 91 24 54 56 86 -Card 126: 49 98 17 94 19 37 69 1 40 20 | 19 90 77 21 94 96 98 34 49 15 28 76 71 22 83 37 1 69 53 12 31 40 17 42 20 -Card 127: 97 45 16 74 87 96 76 60 29 3 | 87 2 45 66 29 17 72 22 15 74 54 38 3 37 60 76 97 62 49 96 61 51 5 16 25 -Card 128: 19 79 62 95 67 59 77 5 70 98 | 56 70 21 85 18 68 88 98 79 95 5 83 16 77 91 63 90 19 84 76 37 59 62 67 44 -Card 129: 94 73 69 51 30 98 1 65 11 45 | 71 5 44 7 52 79 61 99 11 25 10 8 78 33 57 51 75 20 77 9 6 91 4 46 12 -Card 130: 26 98 8 44 84 7 29 47 70 24 | 13 54 48 6 45 78 83 28 10 2 29 71 16 44 62 89 24 53 46 67 20 43 84 91 88 -Card 131: 41 27 22 4 39 82 84 68 29 85 | 22 85 16 24 44 25 41 46 23 39 88 9 82 51 90 64 13 80 74 15 4 78 91 94 93 -Card 132: 32 46 49 99 77 63 37 18 54 80 | 59 65 42 55 47 18 6 32 9 37 85 52 30 94 72 13 77 97 22 46 26 99 90 92 17 -Card 133: 70 72 53 32 24 71 17 27 39 67 | 9 87 57 49 90 81 40 28 37 8 67 51 18 65 99 16 3 31 73 12 91 44 55 70 60 -Card 134: 10 65 66 5 88 67 83 75 52 33 | 90 37 65 2 52 69 34 4 45 72 15 1 44 96 94 36 35 76 5 56 63 79 20 12 75 -Card 135: 71 54 43 41 34 29 16 88 77 44 | 9 33 48 82 52 74 28 10 22 42 15 47 27 5 7 23 56 55 94 49 63 72 61 78 46 -Card 136: 10 97 3 82 73 87 95 80 35 63 | 20 63 50 79 52 77 2 38 84 83 59 74 51 26 5 46 9 49 19 8 13 36 15 7 23 -Card 137: 97 53 91 22 90 12 93 23 3 86 | 96 82 24 21 30 51 65 44 50 31 71 34 54 38 36 88 94 48 32 83 99 84 74 27 33 -Card 138: 8 97 59 46 75 32 65 82 40 44 | 5 81 19 36 54 2 14 39 20 76 3 68 46 50 47 15 96 89 95 41 37 22 99 40 58 -Card 139: 66 97 45 10 72 63 29 43 84 9 | 61 3 74 56 58 4 15 6 68 55 20 23 80 47 83 44 91 19 31 50 54 73 93 45 53 -Card 140: 1 9 81 51 8 90 35 61 82 27 | 55 49 88 60 7 93 46 96 70 75 18 37 41 52 36 78 77 80 5 31 76 79 65 99 20 -Card 141: 93 8 76 47 31 92 18 23 29 34 | 95 67 73 27 9 98 85 70 96 36 87 89 52 63 65 78 37 24 3 90 2 97 19 93 51 -Card 142: 34 71 94 2 79 18 69 89 44 19 | 3 10 9 62 71 44 37 32 97 85 2 89 48 6 14 95 17 91 5 99 11 33 41 39 22 -Card 143: 1 91 47 65 14 42 96 12 52 6 | 70 47 45 3 2 54 52 42 65 25 16 38 91 57 72 96 90 36 34 14 79 78 1 39 76 -Card 144: 32 9 19 63 16 5 81 1 2 49 | 90 19 52 28 23 75 34 57 70 81 1 36 26 2 32 27 63 43 16 4 49 99 9 21 5 -Card 145: 11 45 95 1 92 20 34 49 70 28 | 66 27 57 51 23 24 81 69 56 80 55 89 1 47 95 32 7 5 14 92 99 73 20 84 65 -Card 146: 29 84 70 31 61 77 47 89 96 63 | 32 96 52 23 73 79 47 66 67 46 31 26 8 82 15 29 89 84 77 72 11 1 63 97 27 -Card 147: 90 51 66 50 32 47 39 20 24 46 | 82 49 76 79 57 9 94 84 80 97 51 4 35 83 63 50 69 72 20 58 31 93 7 24 62 -Card 148: 50 53 44 71 81 41 31 57 88 2 | 41 2 68 51 53 37 25 65 34 24 50 98 95 76 88 69 82 42 81 58 31 11 77 33 21 -Card 149: 54 32 10 37 35 3 64 4 34 14 | 77 80 53 7 4 29 12 33 69 35 40 32 11 44 83 15 34 2 54 48 30 46 84 14 81 -Card 150: 68 41 72 13 84 60 20 54 6 90 | 56 54 65 25 5 32 39 34 26 63 16 86 75 92 95 28 78 62 24 8 48 98 83 69 57 -Card 151: 61 48 8 19 95 28 56 34 68 72 | 96 73 69 11 10 29 91 44 28 39 49 34 17 35 19 90 82 61 40 86 95 31 33 81 46 -Card 152: 24 65 90 26 97 95 55 68 54 96 | 30 43 70 47 92 96 68 74 26 73 77 97 8 90 86 54 69 17 79 55 16 78 7 38 6 -Card 153: 8 61 75 62 12 30 66 64 97 6 | 63 70 81 41 47 85 76 11 90 58 45 39 95 97 22 34 78 82 86 7 99 18 35 31 29 -Card 154: 42 2 81 53 80 36 62 64 89 49 | 99 80 49 84 24 91 93 70 88 30 19 47 79 32 33 18 62 25 8 60 28 92 14 89 42 -Card 155: 30 76 60 19 12 49 63 33 77 90 | 91 22 96 4 76 47 8 64 58 40 27 49 52 19 63 15 43 73 97 83 61 80 65 34 9 -Card 156: 75 23 40 88 39 96 9 36 21 51 | 39 70 67 1 92 62 57 5 27 87 78 81 51 28 63 23 56 2 93 84 75 21 29 97 20 -Card 157: 95 86 3 18 98 85 31 22 71 79 | 6 8 89 88 7 38 39 18 15 40 22 96 87 55 90 80 36 9 20 83 1 34 49 73 98 -Card 158: 31 36 87 28 57 21 64 35 55 5 | 96 2 78 38 62 32 40 75 14 43 65 71 70 74 61 87 86 1 80 47 23 27 45 67 42 -Card 159: 52 31 14 72 16 90 94 45 88 29 | 64 87 46 77 51 74 40 5 16 92 95 82 12 6 38 35 72 98 89 11 84 97 99 57 93 -Card 160: 69 51 53 88 58 54 27 48 78 4 | 70 87 72 32 33 23 94 83 10 73 76 19 91 68 80 89 34 64 58 13 98 5 78 75 52 -Card 161: 68 34 80 98 81 36 19 61 79 40 | 50 74 25 29 57 12 73 42 83 8 86 30 66 55 20 17 49 84 82 41 46 97 71 23 44 -Card 162: 94 12 32 66 57 67 97 39 65 7 | 71 23 76 47 49 9 86 58 50 78 88 15 90 43 54 27 37 81 75 13 34 64 87 2 40 -Card 163: 57 72 66 78 45 23 76 2 24 81 | 58 17 19 44 5 3 2 57 39 82 88 24 47 8 90 31 66 92 68 45 72 78 81 76 23 -Card 164: 22 57 61 52 83 80 99 37 39 36 | 80 23 67 54 43 99 83 28 37 13 3 55 91 52 51 98 82 27 21 61 22 36 85 57 39 -Card 165: 62 81 8 72 15 53 36 98 51 22 | 76 6 26 73 65 98 36 72 33 97 5 81 53 69 22 15 14 44 11 8 51 62 13 45 20 -Card 166: 28 33 40 30 17 74 81 2 88 62 | 4 79 81 96 93 48 62 39 40 78 33 75 26 29 37 30 2 17 31 28 15 88 97 72 74 -Card 167: 16 1 46 98 76 85 35 91 21 18 | 21 82 94 95 87 66 89 30 64 10 33 93 23 29 34 47 96 20 77 83 81 75 88 46 49 -Card 168: 50 86 74 64 85 75 80 21 5 46 | 85 74 50 64 96 51 49 55 48 72 5 14 3 39 92 54 46 38 21 86 33 97 61 75 15 -Card 169: 51 49 66 48 30 10 32 67 60 69 | 42 32 67 43 62 66 10 38 37 60 51 48 9 29 16 49 74 25 36 91 24 69 81 17 30 -Card 170: 17 24 18 73 64 60 56 38 80 8 | 94 45 30 39 71 12 88 89 61 2 23 40 9 48 42 52 28 96 59 95 19 72 36 81 25 -Card 171: 38 32 75 85 98 11 17 57 89 56 | 52 57 75 85 32 61 38 98 3 16 60 50 56 34 26 89 77 11 17 49 81 9 20 8 1 -Card 172: 1 30 98 25 63 39 29 17 58 40 | 98 6 30 85 27 25 69 17 93 47 29 31 63 5 23 56 87 7 91 39 35 58 59 22 38 -Card 173: 88 59 3 87 21 91 24 4 82 48 | 97 53 67 73 28 66 45 27 36 88 64 99 92 24 26 87 72 96 84 59 85 68 82 49 10 -Card 174: 56 79 60 1 77 37 83 9 30 92 | 2 15 71 79 60 31 32 58 34 74 42 1 18 5 38 83 97 12 92 86 56 95 19 85 98 -Card 175: 2 50 25 89 41 75 94 78 95 17 | 72 81 28 48 55 17 69 66 40 91 78 32 27 2 95 13 50 80 15 3 49 94 90 85 25 -Card 176: 51 22 14 16 1 62 64 84 12 25 | 22 34 91 76 62 38 88 78 35 95 51 45 12 92 61 28 81 16 36 14 8 66 9 10 56 -Card 177: 83 47 79 45 75 15 44 52 11 88 | 26 5 59 93 83 88 79 44 4 28 32 86 52 89 56 47 97 48 80 15 3 40 98 18 33 -Card 178: 87 42 52 70 32 7 39 6 9 17 | 17 9 5 45 52 4 70 72 27 3 78 24 50 39 94 87 47 14 42 6 44 95 85 88 7 -Card 179: 79 87 75 44 93 9 71 16 11 5 | 44 37 11 92 59 50 13 91 36 45 87 77 99 31 68 94 9 62 71 38 8 16 42 55 5 -Card 180: 18 98 61 58 87 41 51 37 28 79 | 65 32 36 92 49 45 10 93 40 4 67 76 55 42 88 30 75 44 23 71 98 51 14 78 24 -Card 181: 7 17 80 68 38 36 86 59 75 96 | 68 64 54 8 12 6 88 45 80 98 51 60 53 22 75 50 34 77 29 38 24 9 48 70 36 -Card 182: 9 57 37 30 78 31 18 40 49 32 | 11 57 40 50 68 22 18 36 74 91 29 52 70 81 75 69 38 7 26 24 33 55 5 34 95 -Card 183: 36 15 99 95 83 87 22 80 59 31 | 61 99 31 20 55 57 89 34 26 72 39 67 4 22 2 91 24 83 56 44 14 81 49 10 12 -Card 184: 70 55 77 4 95 51 10 13 75 27 | 70 38 97 88 85 24 48 67 69 89 13 49 28 60 71 10 93 72 84 15 57 98 33 16 20 -Card 185: 32 53 24 75 26 20 94 4 73 57 | 80 22 1 10 4 71 16 44 87 35 19 72 47 40 59 36 58 2 8 43 23 46 37 34 12 -Card 186: 93 84 73 24 6 37 72 41 55 75 | 36 71 80 32 2 68 58 47 33 6 70 10 78 19 44 82 39 90 54 91 88 20 28 64 87 -Card 187: 62 23 40 15 57 69 94 64 60 85 | 63 26 36 8 90 42 58 73 30 28 32 18 50 48 54 88 72 86 13 37 22 5 87 79 77 -Card 188: 84 42 64 5 88 96 45 91 66 25 | 91 32 93 75 25 2 73 85 88 33 66 58 45 53 28 42 57 40 39 24 5 84 96 78 67 -Card 189: 59 99 36 6 34 46 98 29 69 53 | 52 17 67 11 98 25 41 34 59 69 46 99 72 92 80 14 26 1 51 76 33 95 36 6 29 -Card 190: 75 5 85 72 81 96 7 74 21 39 | 32 44 7 87 42 72 86 4 71 81 95 84 85 33 75 78 74 76 96 21 37 58 10 64 73 -Card 191: 28 83 55 46 56 85 78 21 47 37 | 46 47 82 21 57 29 54 59 78 39 30 33 89 48 83 55 28 85 94 24 72 96 37 56 9 -Card 192: 72 91 29 35 2 42 71 24 82 55 | 49 29 84 40 69 85 24 48 3 42 61 9 63 37 41 79 11 20 72 14 80 71 16 38 82 -Card 193: 61 88 76 45 71 29 84 78 81 83 | 85 63 56 2 49 92 47 30 71 43 38 76 60 88 81 84 98 94 8 6 51 58 42 70 61 -Card 194: 28 18 61 86 27 79 32 48 58 96 | 13 20 95 38 63 46 51 78 90 3 80 15 72 76 88 77 69 24 6 35 28 62 5 36 65 -Card 195: 96 89 40 50 26 36 86 75 62 10 | 6 5 69 72 82 45 3 33 86 71 97 34 36 91 42 20 80 93 40 35 96 89 17 31 50 -Card 196: 45 11 82 74 51 55 19 43 24 94 | 63 14 22 75 94 29 19 39 13 8 82 32 76 41 53 43 54 91 11 17 62 21 71 42 86 -Card 197: 20 64 71 4 50 90 49 17 8 6 | 65 92 6 60 94 54 56 33 80 75 69 15 49 71 26 81 67 37 74 11 20 25 43 85 19 -Card 198: 28 11 15 25 97 2 22 31 29 73 | 14 35 15 87 81 54 49 2 20 79 44 96 38 94 55 97 17 86 65 46 32 21 67 58 27 -Card 199: 50 83 4 30 82 92 76 11 55 19 | 47 50 57 53 5 14 28 85 46 88 94 51 13 38 3 89 66 45 87 24 31 96 69 73 44 -Card 200: 55 23 78 25 87 33 36 80 79 38 | 99 30 52 4 85 95 66 26 28 91 20 45 72 68 8 35 92 86 93 43 65 97 14 50 44 -Card 201: 33 75 55 46 25 63 76 37 1 73 | 68 64 22 99 12 56 43 28 44 80 91 65 78 27 71 32 95 29 59 36 45 60 77 62 82 -Card 202: 66 29 75 28 68 42 98 21 82 99 | 23 92 38 44 45 12 6 4 17 64 67 60 36 79 46 58 14 73 71 72 81 49 13 2 30 \ No newline at end of file diff --git a/inputs/2023/06.txt b/inputs/2023/06.txt deleted file mode 100644 index 0729438..0000000 --- a/inputs/2023/06.txt +++ /dev/null @@ -1,2 +0,0 @@ -Time: 49 97 94 94 -Distance: 263 1532 1378 1851 \ No newline at end of file From 2f768402cf1599abed50b380be6b52c1163f92fe Mon Sep 17 00:00:00 2001 From: James Lawlor Date: Sat, 7 Dec 2024 12:58:19 +0200 Subject: [PATCH 07/10] refacotr inputs and tessts filenames --- inputs/{2023 => year_2023}/01.dat | 0 inputs/{2023 => year_2023}/02.dat | 0 inputs/{2023 => year_2023}/03.dat | 0 inputs/{2023 => year_2023}/04.dat | 0 inputs/{2023 => year_2023}/06.dat | 0 tests/{2023/day_01.py => year_2023/test_day_01.py} | 0 tests/{2023/day_02.py => year_2023/test_day_02.py} | 0 tests/{2023/day_03.py => year_2023/test_day_03.py} | 0 tests/{2023/day_04.py => year_2023/test_day_04.py} | 0 tests/{2023/day_06.py => year_2023/test_day_06.py} | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename inputs/{2023 => year_2023}/01.dat (100%) rename inputs/{2023 => year_2023}/02.dat (100%) rename inputs/{2023 => year_2023}/03.dat (100%) rename inputs/{2023 => year_2023}/04.dat (100%) rename inputs/{2023 => year_2023}/06.dat (100%) rename tests/{2023/day_01.py => year_2023/test_day_01.py} (100%) rename tests/{2023/day_02.py => year_2023/test_day_02.py} (100%) rename tests/{2023/day_03.py => year_2023/test_day_03.py} (100%) rename tests/{2023/day_04.py => year_2023/test_day_04.py} (100%) rename tests/{2023/day_06.py => year_2023/test_day_06.py} (100%) diff --git a/inputs/2023/01.dat b/inputs/year_2023/01.dat similarity index 100% rename from inputs/2023/01.dat rename to inputs/year_2023/01.dat diff --git a/inputs/2023/02.dat b/inputs/year_2023/02.dat similarity index 100% rename from inputs/2023/02.dat rename to inputs/year_2023/02.dat diff --git a/inputs/2023/03.dat b/inputs/year_2023/03.dat similarity index 100% rename from inputs/2023/03.dat rename to inputs/year_2023/03.dat diff --git a/inputs/2023/04.dat b/inputs/year_2023/04.dat similarity index 100% rename from inputs/2023/04.dat rename to inputs/year_2023/04.dat diff --git a/inputs/2023/06.dat b/inputs/year_2023/06.dat similarity index 100% rename from inputs/2023/06.dat rename to inputs/year_2023/06.dat diff --git a/tests/2023/day_01.py b/tests/year_2023/test_day_01.py similarity index 100% rename from tests/2023/day_01.py rename to tests/year_2023/test_day_01.py diff --git a/tests/2023/day_02.py b/tests/year_2023/test_day_02.py similarity index 100% rename from tests/2023/day_02.py rename to tests/year_2023/test_day_02.py diff --git a/tests/2023/day_03.py b/tests/year_2023/test_day_03.py similarity index 100% rename from tests/2023/day_03.py rename to tests/year_2023/test_day_03.py diff --git a/tests/2023/day_04.py b/tests/year_2023/test_day_04.py similarity index 100% rename from tests/2023/day_04.py rename to tests/year_2023/test_day_04.py diff --git a/tests/2023/day_06.py b/tests/year_2023/test_day_06.py similarity index 100% rename from tests/2023/day_06.py rename to tests/year_2023/test_day_06.py From 1b294fa239abda271a03fe6c812cad3ada480579 Mon Sep 17 00:00:00 2001 From: James Lawlor Date: Sat, 7 Dec 2024 12:58:33 +0200 Subject: [PATCH 08/10] fix filenaming --- run_day.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run_day.py b/run_day.py index 7f88753..ca034a0 100644 --- a/run_day.py +++ b/run_day.py @@ -23,7 +23,7 @@ def main(): args = parser.parse_args() day_zero_padded_str = str(args.day).zfill(2) - input_file = f"inputs/{args.year}/{day_zero_padded_str}.dat" + input_file = f"inputs/year_{args.year}/{day_zero_padded_str}.dat" day_module = f"advent_of_code.year_{args.year}.day_{day_zero_padded_str}" print(day_module) From c4b0fb049b0cfe60d42c6eeca2f97d6c4d41c2b5 Mon Sep 17 00:00:00 2001 From: James Lawlor Date: Sat, 7 Dec 2024 13:13:31 +0200 Subject: [PATCH 09/10] add run_all_solutions.py sscript --- Makefile | 8 +---- scripts/run_all_solutions.py | 48 ++++++++++++++++++++++++++ run_day.py => scripts/run_day.py | 1 - src/advent_of_code/year_2023/day_02.py | 11 +++--- src/advent_of_code/year_2023/day_03.py | 5 ++- src/advent_of_code/year_2023/day_04.py | 5 ++- src/advent_of_code/year_2023/day_06.py | 5 ++- 7 files changed, 59 insertions(+), 24 deletions(-) create mode 100644 scripts/run_all_solutions.py rename run_day.py => scripts/run_day.py (98%) diff --git a/Makefile b/Makefile index a426d96..012b309 100644 --- a/Makefile +++ b/Makefile @@ -16,14 +16,8 @@ ruff: test: python3 -m pytest -# Run specific solutions for Advent of Code 2023 solutions: - python3 src/advent_of_code/year_2023/days/1.py --input_file inputs/2023/01.txt --part 1 - python3 src/advent_of_code/year_2023/days/1.py --input_file inputs/2023/01.txt --part 2 - python3 src/advent_of_code/year_2023/days/2.py --input_file inputs/2023/02.txt - python3 src/advent_of_code/year_2023/days/3.py --input_file inputs/2023/03.txt - python3 src/advent_of_code/year_2023/days/4.py --input_file inputs/2023/04.txt - python3 src/advent_of_code/year_2023/days/6.py --input_file inputs/2023/06.txt + python3 scripts/run_all_solutions.py .PHONY: new-day-skeleton-files-from-template new-day-skeleton-files-from-template: diff --git a/scripts/run_all_solutions.py b/scripts/run_all_solutions.py new file mode 100644 index 0000000..47d4ea2 --- /dev/null +++ b/scripts/run_all_solutions.py @@ -0,0 +1,48 @@ +import os +import re +import subprocess + +BASE_DIR = "src/advent_of_code" +YEARS_DIR = os.path.join(BASE_DIR, "year_") +RUN_DAY_SCRIPT = "scripts/run_day.py" +INPUTS_DIR = "inputs" + +def discover_and_run_solutions(): + # Regex to match "day_.py" + day_pattern = re.compile(r"day_(\d{2})\.py") + + for year in sorted(os.listdir(BASE_DIR)): + if year.startswith("year_"): + year_path = os.path.join(BASE_DIR, year) + year_number = year.split("_")[1] + + # Look for days in the "days" directory + days_dir = os.path.join(year_path) + for file in sorted(os.listdir(days_dir)): + match = day_pattern.match(file) + if match: + day_number = match.group(1) + + # Build input file path + input_file = os.path.join(INPUTS_DIR, f"year_{year_number}", f"{day_number}.dat") + if not os.path.exists(input_file): + print(f"Input file for {year_number} Day {day_number} not found, skipping.") + continue + + # Run the solution using run_day.py + try: + print(f"Running {year_number} Day {day_number}...") + subprocess.run( + [ + "python3", RUN_DAY_SCRIPT, + "--year", year_number, + "--day", str(int(day_number)), # Remove leading zero for argument + ], + check=True + ) + print("\n") + except subprocess.CalledProcessError as e: + print(f"Error running {year_number} Day {day_number}: {e}") + +if __name__ == "__main__": + discover_and_run_solutions() diff --git a/run_day.py b/scripts/run_day.py similarity index 98% rename from run_day.py rename to scripts/run_day.py index ca034a0..dea9cee 100644 --- a/run_day.py +++ b/scripts/run_day.py @@ -26,7 +26,6 @@ def main(): input_file = f"inputs/year_{args.year}/{day_zero_padded_str}.dat" day_module = f"advent_of_code.year_{args.year}.day_{day_zero_padded_str}" - print(day_module) try: # Dynamically import the module for the specified day diff --git a/src/advent_of_code/year_2023/day_02.py b/src/advent_of_code/year_2023/day_02.py index 87bb078..a461ce7 100644 --- a/src/advent_of_code/year_2023/day_02.py +++ b/src/advent_of_code/year_2023/day_02.py @@ -56,14 +56,11 @@ def calculate_game_power(max_colour_1, max_colour_2, max_colour_3): return max_colour_1 * max_colour_2 * max_colour_3 -def main(): - args = parse_args() - input = read_input(args.input_file) +def main(input_file): + input = read_input(input_file) part_1_solution, part_2_solution = solve_day_2(input) - print( - f"Day 2: Part 1 solution is {part_1_solution}." - f"Part 2 solution is {part_2_solution}." - ) + print(f"Day 2: Part 1 solution is {part_1_solution}.") + print(f"Part 2 solution is {part_2_solution}.") if __name__ == "__main__": diff --git a/src/advent_of_code/year_2023/day_03.py b/src/advent_of_code/year_2023/day_03.py index a75069a..da2d817 100644 --- a/src/advent_of_code/year_2023/day_03.py +++ b/src/advent_of_code/year_2023/day_03.py @@ -194,9 +194,8 @@ def solve_day_3(input) -> int: -def main(): - args = parse_args() - input = read_input(args.input_file) +def main(input_file): + input = read_input(input_file) result_part_1, result_part_2 = solve_day_3(input) print( f"Day 3: The sum of part numbers is {result_part_1}. " diff --git a/src/advent_of_code/year_2023/day_04.py b/src/advent_of_code/year_2023/day_04.py index 81cecdf..899e29c 100644 --- a/src/advent_of_code/year_2023/day_04.py +++ b/src/advent_of_code/year_2023/day_04.py @@ -79,9 +79,8 @@ def solve_day_4(input) -> int: return (total_score, n_scratchcards) -def main(): - args = parse_args() - input = read_input(args.input_file) +def main(input_file): + input = read_input(input_file) result_part_1, result_part_2 = solve_day_4(input) print( f"Day 4: " diff --git a/src/advent_of_code/year_2023/day_06.py b/src/advent_of_code/year_2023/day_06.py index e99a557..d979ac7 100644 --- a/src/advent_of_code/year_2023/day_06.py +++ b/src/advent_of_code/year_2023/day_06.py @@ -63,9 +63,8 @@ def solve_day_6(input): return (races_part_1.solve(), races_part_2.solve()) -def main(): - args = parse_args() - input = read_input(args.input_file) +def main(input_file): + input = read_input(input_file) result_part_1, result_part_2 = solve_day_6(input) print( f"Day 6: " From e3957b4853c38134d02f8d250f96ec7de9d20b42 Mon Sep 17 00:00:00 2001 From: James Lawlor Date: Sat, 7 Dec 2024 13:13:50 +0200 Subject: [PATCH 10/10] ruff --- src/advent_of_code/year_2023/day_01.py | 1 - src/advent_of_code/year_2023/day_02.py | 2 +- src/advent_of_code/year_2023/day_03.py | 2 +- src/advent_of_code/year_2023/day_04.py | 2 +- src/advent_of_code/year_2023/day_06.py | 2 +- 5 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/advent_of_code/year_2023/day_01.py b/src/advent_of_code/year_2023/day_01.py index 2829d0c..53ccbf2 100644 --- a/src/advent_of_code/year_2023/day_01.py +++ b/src/advent_of_code/year_2023/day_01.py @@ -1,6 +1,5 @@ from advent_of_code.utils.input_handling import ( read_input, - parse_args, ) import re diff --git a/src/advent_of_code/year_2023/day_02.py b/src/advent_of_code/year_2023/day_02.py index a461ce7..2dc2f6b 100644 --- a/src/advent_of_code/year_2023/day_02.py +++ b/src/advent_of_code/year_2023/day_02.py @@ -1,4 +1,4 @@ -from advent_of_code.utils.input_handling import read_input, parse_args +from advent_of_code.utils.input_handling import read_input import re diff --git a/src/advent_of_code/year_2023/day_03.py b/src/advent_of_code/year_2023/day_03.py index da2d817..391d74b 100644 --- a/src/advent_of_code/year_2023/day_03.py +++ b/src/advent_of_code/year_2023/day_03.py @@ -1,4 +1,4 @@ -from advent_of_code.utils.input_handling import read_input, parse_args +from advent_of_code.utils.input_handling import read_input import re diff --git a/src/advent_of_code/year_2023/day_04.py b/src/advent_of_code/year_2023/day_04.py index 899e29c..1287e7a 100644 --- a/src/advent_of_code/year_2023/day_04.py +++ b/src/advent_of_code/year_2023/day_04.py @@ -1,4 +1,4 @@ -from advent_of_code.utils.input_handling import read_input, parse_args +from advent_of_code.utils.input_handling import read_input import re diff --git a/src/advent_of_code/year_2023/day_06.py b/src/advent_of_code/year_2023/day_06.py index d979ac7..a54a364 100644 --- a/src/advent_of_code/year_2023/day_06.py +++ b/src/advent_of_code/year_2023/day_06.py @@ -1,4 +1,4 @@ -from advent_of_code.utils.input_handling import read_input, parse_args +from advent_of_code.utils.input_handling import read_input import math import re