Add problems for days 1-7
This commit is contained in:
parent
43a091bd88
commit
9d01c42165
81
2020/day01/problem
Normal file
81
2020/day01/problem
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
# Advent of Code
|
||||||
|
|
||||||
|
--- Day 1: Report Repair ---
|
||||||
|
|
||||||
|
After saving Christmas five years in a row, you've decided to take a vacation at a nice
|
||||||
|
resort on a tropical island. Surely, Christmas will go on without you.
|
||||||
|
|
||||||
|
The tropical island has its own currency and is entirely cash-only. The gold coins used
|
||||||
|
there have a little picture of a starfish; the locals just call them stars. None of the
|
||||||
|
currency exchanges seem to have heard of them, but somehow, you'll need to find fifty of
|
||||||
|
these coins by the time you arrive so you can pay the deposit on your room.
|
||||||
|
|
||||||
|
To save your vacation, you need to get all fifty stars by December 25th.
|
||||||
|
|
||||||
|
Collect stars by solving puzzles. Two puzzles will be made available on each day in the
|
||||||
|
Advent calendar; the second puzzle is unlocked when you complete the first. Each puzzle
|
||||||
|
grants one star. Good luck!
|
||||||
|
|
||||||
|
Before you leave, the Elves in accounting just need you to fix your expense report (your
|
||||||
|
puzzle input); apparently, something isn't quite adding up.
|
||||||
|
|
||||||
|
Specifically, they need you to find the two entries that sum to 2020 and then multiply
|
||||||
|
those two numbers together.
|
||||||
|
|
||||||
|
For example, suppose your expense report contained the following:
|
||||||
|
|
||||||
|
1721
|
||||||
|
979
|
||||||
|
366
|
||||||
|
299
|
||||||
|
675
|
||||||
|
1456
|
||||||
|
|
||||||
|
In this list, the two entries that sum to 2020 are 1721 and 299. Multiplying them together
|
||||||
|
produces 1721 * 299 = 514579, so the correct answer is 514579.
|
||||||
|
|
||||||
|
Of course, your expense report is much larger. Find the two entries that sum to 2020; what
|
||||||
|
do you get if you multiply them together?
|
||||||
|
|
||||||
|
Your puzzle answer was 157059.
|
||||||
|
|
||||||
|
--- Part Two ---
|
||||||
|
|
||||||
|
The Elves in accounting are thankful for your help; one of them even offers you a starfish
|
||||||
|
coin they had left over from a past vacation. They offer you a second one if you can find
|
||||||
|
three numbers in your expense report that meet the same criteria.
|
||||||
|
|
||||||
|
Using the above example again, the three entries that sum to 2020 are 979, 366, and 675.
|
||||||
|
Multiplying them together produces the answer, 241861950.
|
||||||
|
|
||||||
|
In your expense report, what is the product of the three entries that sum to 2020?
|
||||||
|
|
||||||
|
Your puzzle answer was 165080960.
|
||||||
|
|
||||||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
||||||
|
|
||||||
|
At this point, you should return to your Advent calendar and try another puzzle.
|
||||||
|
|
||||||
|
If you still want to see it, you can get your puzzle input.
|
||||||
|
|
||||||
|
References
|
||||||
|
|
||||||
|
Visible links
|
||||||
|
. https://adventofcode.com/
|
||||||
|
. https://adventofcode.com/2020/about
|
||||||
|
. https://adventofcode.com/2020/events
|
||||||
|
. https://adventofcode.com/2020/settings
|
||||||
|
. https://adventofcode.com/2020/auth/logout
|
||||||
|
. Advent of Code Supporter
|
||||||
|
https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://adventofcode.com/2020/leaderboard
|
||||||
|
. https://adventofcode.com/2020/stats
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://github.com/
|
||||||
|
. https://adventofcode.com/events
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/day/1/input
|
87
2020/day02/problem
Normal file
87
2020/day02/problem
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
# Advent of Code
|
||||||
|
|
||||||
|
--- Day 2: Password Philosophy ---
|
||||||
|
|
||||||
|
Your flight departs in a few days from the coastal airport; the easiest way down to the
|
||||||
|
coast from here is via toboggan.
|
||||||
|
|
||||||
|
The shopkeeper at the North Pole Toboggan Rental Shop is having a bad day. "Something's
|
||||||
|
wrong with our computers; we can't log in!" You ask if you can take a look.
|
||||||
|
|
||||||
|
Their password database seems to be a little corrupted: some of the passwords wouldn't have
|
||||||
|
been allowed by the Official Toboggan Corporate Policy that was in effect when they were
|
||||||
|
chosen.
|
||||||
|
|
||||||
|
To try to debug the problem, they have created a list (your puzzle input) of passwords
|
||||||
|
(according to the corrupted database) and the corporate policy when that password was set.
|
||||||
|
|
||||||
|
For example, suppose you have the following list:
|
||||||
|
|
||||||
|
1-3 a: abcde
|
||||||
|
1-3 b: cdefg
|
||||||
|
2-9 c: ccccccccc
|
||||||
|
|
||||||
|
Each line gives the password policy and then the password. The password policy indicates
|
||||||
|
the lowest and highest number of times a given letter must appear for the password to be
|
||||||
|
valid. For example, 1-3 a means that the password must contain a at least 1 time and at
|
||||||
|
most 3 times.
|
||||||
|
|
||||||
|
In the above example, 2 passwords are valid. The middle password, cdefg, is not; it
|
||||||
|
contains no instances of b, but needs at least 1. The first and third passwords are valid:
|
||||||
|
they contain one a or nine c, both within the limits of their respective policies.
|
||||||
|
|
||||||
|
How many passwords are valid according to their policies?
|
||||||
|
|
||||||
|
Your puzzle answer was 636.
|
||||||
|
|
||||||
|
--- Part Two ---
|
||||||
|
|
||||||
|
While it appears you validated the passwords correctly, they don't seem to be what the
|
||||||
|
Official Toboggan Corporate Authentication System is expecting.
|
||||||
|
|
||||||
|
The shopkeeper suddenly realizes that he just accidentally explained the password policy
|
||||||
|
rules from his old job at the sled rental place down the street! The Official Toboggan
|
||||||
|
Corporate Policy actually works a little differently.
|
||||||
|
|
||||||
|
Each policy actually describes two positions in the password, where 1 means the first
|
||||||
|
character, 2 means the second character, and so on. (Be careful; Toboggan Corporate
|
||||||
|
Policies have no concept of "index zero"!) Exactly one of these positions must contain the
|
||||||
|
given letter. Other occurrences of the letter are irrelevant for the purposes of policy
|
||||||
|
enforcement.
|
||||||
|
|
||||||
|
Given the same example list from above:
|
||||||
|
|
||||||
|
• 1-3 a: abcde is valid: position 1 contains a and position 3 does not.
|
||||||
|
• 1-3 b: cdefg is invalid: neither position 1 nor position 3 contains b.
|
||||||
|
• 2-9 c: ccccccccc is invalid: both position 2 and position 9 contain c.
|
||||||
|
|
||||||
|
How many passwords are valid according to the new interpretation of the policies?
|
||||||
|
|
||||||
|
Your puzzle answer was 588.
|
||||||
|
|
||||||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
||||||
|
|
||||||
|
At this point, you should return to your Advent calendar and try another puzzle.
|
||||||
|
|
||||||
|
If you still want to see it, you can get your puzzle input.
|
||||||
|
|
||||||
|
References
|
||||||
|
|
||||||
|
Visible links
|
||||||
|
. https://adventofcode.com/
|
||||||
|
. https://adventofcode.com/2020/about
|
||||||
|
. https://adventofcode.com/2020/events
|
||||||
|
. https://adventofcode.com/2020/settings
|
||||||
|
. https://adventofcode.com/2020/auth/logout
|
||||||
|
. Advent of Code Supporter
|
||||||
|
https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://adventofcode.com/2020/leaderboard
|
||||||
|
. https://adventofcode.com/2020/stats
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://en.wikipedia.org/wiki/Toboggan
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/day/2/input
|
119
2020/day03/problem
Normal file
119
2020/day03/problem
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
# Advent of Code
|
||||||
|
|
||||||
|
--- Day 3: Toboggan Trajectory ---
|
||||||
|
|
||||||
|
With the toboggan login problems resolved, you set off toward the airport. While travel by
|
||||||
|
toboggan might be easy, it's certainly not safe: there's very minimal steering and the area
|
||||||
|
is covered in trees. You'll need to see which angles will take you near the fewest trees.
|
||||||
|
|
||||||
|
Due to the local geology, trees in this area only grow on exact integer coordinates in a
|
||||||
|
grid. You make a map (your puzzle input) of the open squares (.) and trees (#) you can see.
|
||||||
|
For example:
|
||||||
|
|
||||||
|
..##.......
|
||||||
|
#...#...#..
|
||||||
|
.#....#..#.
|
||||||
|
..#.#...#.#
|
||||||
|
.#...##..#.
|
||||||
|
..#.##.....
|
||||||
|
.#.#.#....#
|
||||||
|
.#........#
|
||||||
|
#.##...#...
|
||||||
|
#...##....#
|
||||||
|
.#..#...#.#
|
||||||
|
|
||||||
|
These aren't the only trees, though; due to something you read about once involving
|
||||||
|
arboreal genetics and biome stability, the same pattern repeats to the right many times:
|
||||||
|
|
||||||
|
..##.........##.........##.........##.........##.........##....... --->
|
||||||
|
#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..
|
||||||
|
.#....#..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#.
|
||||||
|
..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#
|
||||||
|
.#...##..#..#...##..#..#...##..#..#...##..#..#...##..#..#...##..#.
|
||||||
|
..#.##.......#.##.......#.##.......#.##.......#.##.......#.##..... --->
|
||||||
|
.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#
|
||||||
|
.#........#.#........#.#........#.#........#.#........#.#........#
|
||||||
|
#.##...#...#.##...#...#.##...#...#.##...#...#.##...#...#.##...#...
|
||||||
|
#...##....##...##....##...##....##...##....##...##....##...##....#
|
||||||
|
.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.# --->
|
||||||
|
|
||||||
|
You start on the open square (.) in the top-left corner and need to reach the bottom (below
|
||||||
|
the bottom-most row on your map).
|
||||||
|
|
||||||
|
The toboggan can only follow a few specific slopes (you opted for a cheaper model that
|
||||||
|
prefers rational numbers); start by counting all the trees you would encounter for the
|
||||||
|
slope right 3, down 1:
|
||||||
|
|
||||||
|
From your starting position at the top-left, check the position that is right 3 and down 1.
|
||||||
|
Then, check the position that is right 3 and down 1 from there, and so on until you go past
|
||||||
|
the bottom of the map.
|
||||||
|
|
||||||
|
The locations you'd check in the above example are marked here with O where there was an
|
||||||
|
open square and X where there was a tree:
|
||||||
|
|
||||||
|
..##.........##.........##.........##.........##.........##....... --->
|
||||||
|
#..O#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..
|
||||||
|
.#....X..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#.
|
||||||
|
..#.#...#O#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#
|
||||||
|
.#...##..#..X...##..#..#...##..#..#...##..#..#...##..#..#...##..#.
|
||||||
|
..#.##.......#.X#.......#.##.......#.##.......#.##.......#.##..... --->
|
||||||
|
.#.#.#....#.#.#.#.O..#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#
|
||||||
|
.#........#.#........X.#........#.#........#.#........#.#........#
|
||||||
|
#.##...#...#.##...#...#.X#...#...#.##...#...#.##...#...#.##...#...
|
||||||
|
#...##....##...##....##...#X....##...##....##...##....##...##....#
|
||||||
|
.#..#...#.#.#..#...#.#.#..#...X.#.#..#...#.#.#..#...#.#.#..#...#.# --->
|
||||||
|
|
||||||
|
In this example, traversing the map using this slope would cause you to encounter 7 trees.
|
||||||
|
|
||||||
|
Starting at the top-left corner of your map and following a slope of right 3 and down 1,
|
||||||
|
how many trees would you encounter?
|
||||||
|
|
||||||
|
Your puzzle answer was 289.
|
||||||
|
|
||||||
|
--- Part Two ---
|
||||||
|
|
||||||
|
Time to check the rest of the slopes - you need to minimize the probability of a sudden
|
||||||
|
arboreal stop, after all.
|
||||||
|
|
||||||
|
Determine the number of trees you would encounter if, for each of the following slopes, you
|
||||||
|
start at the top-left corner and traverse the map all the way to the bottom:
|
||||||
|
|
||||||
|
• Right 1, down 1.
|
||||||
|
• Right 3, down 1. (This is the slope you already checked.)
|
||||||
|
• Right 5, down 1.
|
||||||
|
• Right 7, down 1.
|
||||||
|
• Right 1, down 2.
|
||||||
|
|
||||||
|
In the above example, these slopes would find 2, 7, 3, 4, and 2 tree(s) respectively;
|
||||||
|
multiplied together, these produce the answer 336.
|
||||||
|
|
||||||
|
What do you get if you multiply together the number of trees encountered on each of the
|
||||||
|
listed slopes?
|
||||||
|
|
||||||
|
Your puzzle answer was 5522401584.
|
||||||
|
|
||||||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
||||||
|
|
||||||
|
At this point, you should return to your Advent calendar and try another puzzle.
|
||||||
|
|
||||||
|
If you still want to see it, you can get your puzzle input.
|
||||||
|
|
||||||
|
References
|
||||||
|
|
||||||
|
Visible links
|
||||||
|
. https://adventofcode.com/
|
||||||
|
. https://adventofcode.com/2020/about
|
||||||
|
. https://adventofcode.com/2020/events
|
||||||
|
. https://adventofcode.com/2020/settings
|
||||||
|
. https://adventofcode.com/2020/auth/logout
|
||||||
|
. Advent of Code Supporter
|
||||||
|
https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://adventofcode.com/2020/leaderboard
|
||||||
|
. https://adventofcode.com/2020/stats
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/day/3/input
|
170
2020/day04/problem
Normal file
170
2020/day04/problem
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
# Advent of Code
|
||||||
|
|
||||||
|
--- Day 4: Passport Processing ---
|
||||||
|
|
||||||
|
You arrive at the airport only to realize that you grabbed your North Pole Credentials
|
||||||
|
instead of your passport. While these documents are extremely similar, North Pole
|
||||||
|
Credentials aren't issued by a country and therefore aren't actually valid documentation
|
||||||
|
for travel in most of the world.
|
||||||
|
|
||||||
|
It seems like you're not the only one having problems, though; a very long line has formed
|
||||||
|
for the automatic passport scanners, and the delay could upset your travel itinerary.
|
||||||
|
|
||||||
|
Due to some questionable network security, you realize you might be able to solve both of
|
||||||
|
these problems at the same time.
|
||||||
|
|
||||||
|
The automatic passport scanners are slow because they're having trouble detecting which
|
||||||
|
passports have all required fields. The expected fields are as follows:
|
||||||
|
|
||||||
|
• byr (Birth Year)
|
||||||
|
• iyr (Issue Year)
|
||||||
|
• eyr (Expiration Year)
|
||||||
|
• hgt (Height)
|
||||||
|
• hcl (Hair Color)
|
||||||
|
• ecl (Eye Color)
|
||||||
|
• pid (Passport ID)
|
||||||
|
• cid (Country ID)
|
||||||
|
|
||||||
|
Passport data is validated in batch files (your puzzle input). Each passport is represented
|
||||||
|
as a sequence of key:value pairs separated by spaces or newlines. Passports are separated
|
||||||
|
by blank lines.
|
||||||
|
|
||||||
|
Here is an example batch file containing four passports:
|
||||||
|
|
||||||
|
ecl:gry pid:860033327 eyr:2020 hcl:#fffffd
|
||||||
|
byr:1937 iyr:2017 cid:147 hgt:183cm
|
||||||
|
|
||||||
|
iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884
|
||||||
|
hcl:#cfa07d byr:1929
|
||||||
|
|
||||||
|
hcl:#ae17e1 iyr:2013
|
||||||
|
eyr:2024
|
||||||
|
ecl:brn pid:760753108 byr:1931
|
||||||
|
hgt:179cm
|
||||||
|
|
||||||
|
hcl:#cfa07d eyr:2025 pid:166559648
|
||||||
|
iyr:2011 ecl:brn hgt:59in
|
||||||
|
|
||||||
|
The first passport is valid - all eight fields are present. The second passport is invalid
|
||||||
|
- it is missing hgt (the Height field).
|
||||||
|
|
||||||
|
The third passport is interesting; the only missing field is cid, so it looks like data
|
||||||
|
from North Pole Credentials, not a passport at all! Surely, nobody would mind if you made
|
||||||
|
the system temporarily ignore missing cid fields. Treat this "passport" as valid.
|
||||||
|
|
||||||
|
The fourth passport is missing two fields, cid and byr. Missing cid is fine, but missing
|
||||||
|
any other field is not, so this passport is invalid.
|
||||||
|
|
||||||
|
According to the above rules, your improved system would report 2 valid passports.
|
||||||
|
|
||||||
|
Count the number of valid passports - those that have all required fields. Treat cid as
|
||||||
|
optional. In your batch file, how many passports are valid?
|
||||||
|
|
||||||
|
Your puzzle answer was 256.
|
||||||
|
|
||||||
|
--- Part Two ---
|
||||||
|
|
||||||
|
The line is moving more quickly now, but you overhear airport security talking about how
|
||||||
|
passports with invalid data are getting through. Better add some data validation, quick!
|
||||||
|
|
||||||
|
You can continue to ignore the cid field, but each other field has strict rules about what
|
||||||
|
values are valid for automatic validation:
|
||||||
|
|
||||||
|
• byr (Birth Year) - four digits; at least 1920 and at most 2002.
|
||||||
|
• iyr (Issue Year) - four digits; at least 2010 and at most 2020.
|
||||||
|
• eyr (Expiration Year) - four digits; at least 2020 and at most 2030.
|
||||||
|
• hgt (Height) - a number followed by either cm or in:
|
||||||
|
|
||||||
|
• If cm, the number must be at least 150 and at most 193.
|
||||||
|
• If in, the number must be at least 59 and at most 76.
|
||||||
|
|
||||||
|
• hcl (Hair Color) - a # followed by exactly six characters 0-9 or a-f.
|
||||||
|
• ecl (Eye Color) - exactly one of: amb blu brn gry grn hzl oth.
|
||||||
|
• pid (Passport ID) - a nine-digit number, including leading zeroes.
|
||||||
|
• cid (Country ID) - ignored, missing or not.
|
||||||
|
|
||||||
|
Your job is to count the passports where all required fields are both present and valid
|
||||||
|
according to the above rules. Here are some example values:
|
||||||
|
|
||||||
|
byr valid: 2002
|
||||||
|
byr invalid: 2003
|
||||||
|
|
||||||
|
hgt valid: 60in
|
||||||
|
hgt valid: 190cm
|
||||||
|
hgt invalid: 190in
|
||||||
|
hgt invalid: 190
|
||||||
|
|
||||||
|
hcl valid: #123abc
|
||||||
|
hcl invalid: #123abz
|
||||||
|
hcl invalid: 123abc
|
||||||
|
|
||||||
|
ecl valid: brn
|
||||||
|
ecl invalid: wat
|
||||||
|
|
||||||
|
pid valid: 000000001
|
||||||
|
pid invalid: 0123456789
|
||||||
|
|
||||||
|
Here are some invalid passports:
|
||||||
|
|
||||||
|
eyr:1972 cid:100
|
||||||
|
hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926
|
||||||
|
|
||||||
|
iyr:2019
|
||||||
|
hcl:#602927 eyr:1967 hgt:170cm
|
||||||
|
ecl:grn pid:012533040 byr:1946
|
||||||
|
|
||||||
|
hcl:dab227 iyr:2012
|
||||||
|
ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277
|
||||||
|
|
||||||
|
hgt:59cm ecl:zzz
|
||||||
|
eyr:2038 hcl:74454a iyr:2023
|
||||||
|
pid:3556412378 byr:2007
|
||||||
|
|
||||||
|
Here are some valid passports:
|
||||||
|
|
||||||
|
pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980
|
||||||
|
hcl:#623a2f
|
||||||
|
|
||||||
|
eyr:2029 ecl:blu cid:129 byr:1989
|
||||||
|
iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm
|
||||||
|
|
||||||
|
hcl:#888785
|
||||||
|
hgt:164cm byr:2001 iyr:2015 cid:88
|
||||||
|
pid:545766238 ecl:hzl
|
||||||
|
eyr:2022
|
||||||
|
|
||||||
|
iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719
|
||||||
|
|
||||||
|
Count the number of valid passports - those that have all required fields and valid values.
|
||||||
|
Continue to treat cid as optional. In your batch file, how many passports are valid?
|
||||||
|
|
||||||
|
Your puzzle answer was 198.
|
||||||
|
|
||||||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
||||||
|
|
||||||
|
At this point, you should return to your Advent calendar and try another puzzle.
|
||||||
|
|
||||||
|
If you still want to see it, you can get your puzzle input.
|
||||||
|
|
||||||
|
You can also [Shareon Twitter Mastodon] this puzzle.
|
||||||
|
|
||||||
|
References
|
||||||
|
|
||||||
|
Visible links
|
||||||
|
. https://adventofcode.com/
|
||||||
|
. https://adventofcode.com/2020/about
|
||||||
|
. https://adventofcode.com/2020/events
|
||||||
|
. https://adventofcode.com/2020/settings
|
||||||
|
. https://adventofcode.com/2020/auth/logout
|
||||||
|
. Advent of Code Supporter
|
||||||
|
https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://adventofcode.com/2020/leaderboard
|
||||||
|
. https://adventofcode.com/2020/stats
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://github.com/
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/day/4/input
|
101
2020/day05/problem
Normal file
101
2020/day05/problem
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# Advent of Code
|
||||||
|
|
||||||
|
--- Day 5: Binary Boarding ---
|
||||||
|
|
||||||
|
You board your plane only to discover a new problem: you dropped your boarding pass! You
|
||||||
|
aren't sure which seat is yours, and all of the flight attendants are busy with the flood
|
||||||
|
of people that suddenly made it through passport control.
|
||||||
|
|
||||||
|
You write a quick program to use your phone's camera to scan all of the nearby boarding
|
||||||
|
passes (your puzzle input); perhaps you can find your seat through process of elimination.
|
||||||
|
|
||||||
|
Instead of zones or groups, this airline uses binary space partitioning to seat people. A
|
||||||
|
seat might be specified like FBFBBFFRLR, where F means "front", B means "back", L means
|
||||||
|
"left", and R means "right".
|
||||||
|
|
||||||
|
The first 7 characters will either be F or B; these specify exactly one of the 128 rows on
|
||||||
|
the plane (numbered 0 through 127). Each letter tells you which half of a region the given
|
||||||
|
seat is in. Start with the whole list of rows; the first letter indicates whether the seat
|
||||||
|
is in the front (0 through 63) or the back (64 through 127). The next letter indicates
|
||||||
|
which half of that region the seat is in, and so on until you're left with exactly one row.
|
||||||
|
|
||||||
|
For example, consider just the first seven characters of FBFBBFFRLR:
|
||||||
|
|
||||||
|
• Start by considering the whole range, rows 0 through 127.
|
||||||
|
• F means to take the lower half, keeping rows 0 through 63.
|
||||||
|
• B means to take the upper half, keeping rows 32 through 63.
|
||||||
|
• F means to take the lower half, keeping rows 32 through 47.
|
||||||
|
• B means to take the upper half, keeping rows 40 through 47.
|
||||||
|
• B keeps rows 44 through 47.
|
||||||
|
• F keeps rows 44 through 45.
|
||||||
|
• The final F keeps the lower of the two, row 44.
|
||||||
|
|
||||||
|
The last three characters will be either L or R; these specify exactly one of the 8 columns
|
||||||
|
of seats on the plane (numbered 0 through 7). The same process as above proceeds again,
|
||||||
|
this time with only three steps. L means to keep the lower half, while R means to keep the
|
||||||
|
upper half.
|
||||||
|
|
||||||
|
For example, consider just the last 3 characters of FBFBBFFRLR:
|
||||||
|
|
||||||
|
• Start by considering the whole range, columns 0 through 7.
|
||||||
|
• R means to take the upper half, keeping columns 4 through 7.
|
||||||
|
• L means to take the lower half, keeping columns 4 through 5.
|
||||||
|
• The final R keeps the upper of the two, column 5.
|
||||||
|
|
||||||
|
So, decoding FBFBBFFRLR reveals that it is the seat at row 44, column 5.
|
||||||
|
|
||||||
|
Every seat also has a unique seat ID: multiply the row by 8, then add the column. In this
|
||||||
|
example, the seat has ID 44 * 8 + 5 = 357.
|
||||||
|
|
||||||
|
Here are some other boarding passes:
|
||||||
|
|
||||||
|
• BFFFBBFRRR: row 70, column 7, seat ID 567.
|
||||||
|
• FFFBBBFRRR: row 14, column 7, seat ID 119.
|
||||||
|
• BBFFBBFRLL: row 102, column 4, seat ID 820.
|
||||||
|
|
||||||
|
As a sanity check, look through your list of boarding passes. What is the highest seat ID
|
||||||
|
on a boarding pass?
|
||||||
|
|
||||||
|
Your puzzle answer was 991.
|
||||||
|
|
||||||
|
--- Part Two ---
|
||||||
|
|
||||||
|
Ding! The "fasten seat belt" signs have turned on. Time to find your seat.
|
||||||
|
|
||||||
|
It's a completely full flight, so your seat should be the only missing boarding pass in
|
||||||
|
your list. However, there's a catch: some of the seats at the very front and back of the
|
||||||
|
plane don't exist on this aircraft, so they'll be missing from your list as well.
|
||||||
|
|
||||||
|
Your seat wasn't at the very front or back, though; the seats with IDs +1 and -1 from yours
|
||||||
|
will be in your list.
|
||||||
|
|
||||||
|
What is the ID of your seat?
|
||||||
|
|
||||||
|
Your puzzle answer was 534.
|
||||||
|
|
||||||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
||||||
|
|
||||||
|
At this point, you should return to your Advent calendar and try another puzzle.
|
||||||
|
|
||||||
|
If you still want to see it, you can get your puzzle input.
|
||||||
|
|
||||||
|
References
|
||||||
|
|
||||||
|
Visible links
|
||||||
|
. https://adventofcode.com/
|
||||||
|
. https://adventofcode.com/2020/about
|
||||||
|
. https://adventofcode.com/2020/events
|
||||||
|
. https://adventofcode.com/2020/settings
|
||||||
|
. https://adventofcode.com/2020/auth/logout
|
||||||
|
. Advent of Code Supporter
|
||||||
|
https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://adventofcode.com/2020/leaderboard
|
||||||
|
. https://adventofcode.com/2020/stats
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://www.youtube.com/watch?v=oAHbLRjF0vo
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/day/5/input
|
129
2020/day06/problem
Normal file
129
2020/day06/problem
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
# Advent of Code
|
||||||
|
|
||||||
|
--- Day 6: Custom Customs ---
|
||||||
|
|
||||||
|
As your flight approaches the regional airport where you'll switch to a much larger plane,
|
||||||
|
customs declaration forms are distributed to the passengers.
|
||||||
|
|
||||||
|
The form asks a series of 26 yes-or-no questions marked a through z. All you need to do is
|
||||||
|
identify the questions for which anyone in your group answers "yes". Since your group is
|
||||||
|
just you, this doesn't take very long.
|
||||||
|
|
||||||
|
However, the person sitting next to you seems to be experiencing a language barrier and
|
||||||
|
asks if you can help. For each of the people in their group, you write down the questions
|
||||||
|
for which they answer "yes", one per line. For example:
|
||||||
|
|
||||||
|
abcx
|
||||||
|
abcy
|
||||||
|
abcz
|
||||||
|
|
||||||
|
In this group, there are 6 questions to which anyone answered "yes": a, b, c, x, y, and z.
|
||||||
|
(Duplicate answers to the same question don't count extra; each question counts at most
|
||||||
|
once.)
|
||||||
|
|
||||||
|
Another group asks for your help, then another, and eventually you've collected answers
|
||||||
|
from every group on the plane (your puzzle input). Each group's answers are separated by a
|
||||||
|
blank line, and within each group, each person's answers are on a single line. For example:
|
||||||
|
|
||||||
|
abc
|
||||||
|
|
||||||
|
a
|
||||||
|
b
|
||||||
|
c
|
||||||
|
|
||||||
|
ab
|
||||||
|
ac
|
||||||
|
|
||||||
|
a
|
||||||
|
a
|
||||||
|
a
|
||||||
|
a
|
||||||
|
|
||||||
|
b
|
||||||
|
|
||||||
|
This list represents answers from five groups:
|
||||||
|
|
||||||
|
• The first group contains one person who answered "yes" to 3 questions: a, b, and c.
|
||||||
|
• The second group contains three people; combined, they answered "yes" to 3 questions:
|
||||||
|
a, b, and c.
|
||||||
|
• The third group contains two people; combined, they answered "yes" to 3 questions: a,
|
||||||
|
b, and c.
|
||||||
|
• The fourth group contains four people; combined, they answered "yes" to only 1
|
||||||
|
question, a.
|
||||||
|
• The last group contains one person who answered "yes" to only 1 question, b.
|
||||||
|
|
||||||
|
In this example, the sum of these counts is 3 + 3 + 3 + 1 + 1 = 11.
|
||||||
|
|
||||||
|
For each group, count the number of questions to which anyone answered "yes". What is the
|
||||||
|
sum of those counts?
|
||||||
|
|
||||||
|
Your puzzle answer was 6763.
|
||||||
|
|
||||||
|
--- Part Two ---
|
||||||
|
|
||||||
|
As you finish the last group's customs declaration, you notice that you misread one word in
|
||||||
|
the instructions:
|
||||||
|
|
||||||
|
You don't need to identify the questions to which anyone answered "yes"; you need to
|
||||||
|
identify the questions to which everyone answered "yes"!
|
||||||
|
|
||||||
|
Using the same example as above:
|
||||||
|
|
||||||
|
abc
|
||||||
|
|
||||||
|
a
|
||||||
|
b
|
||||||
|
c
|
||||||
|
|
||||||
|
ab
|
||||||
|
ac
|
||||||
|
|
||||||
|
a
|
||||||
|
a
|
||||||
|
a
|
||||||
|
a
|
||||||
|
|
||||||
|
b
|
||||||
|
|
||||||
|
This list represents answers from five groups:
|
||||||
|
|
||||||
|
• In the first group, everyone (all 1 person) answered "yes" to 3 questions: a, b, and c.
|
||||||
|
• In the second group, there is no question to which everyone answered "yes".
|
||||||
|
• In the third group, everyone answered yes to only 1 question, a. Since some people did
|
||||||
|
not answer "yes" to b or c, they don't count.
|
||||||
|
• In the fourth group, everyone answered yes to only 1 question, a.
|
||||||
|
• In the fifth group, everyone (all 1 person) answered "yes" to 1 question, b.
|
||||||
|
|
||||||
|
In this example, the sum of these counts is 3 + 0 + 1 + 1 + 1 = 6.
|
||||||
|
|
||||||
|
For each group, count the number of questions to which everyone answered "yes". What is the
|
||||||
|
sum of those counts?
|
||||||
|
|
||||||
|
Your puzzle answer was 3512.
|
||||||
|
|
||||||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
||||||
|
|
||||||
|
At this point, you should return to your Advent calendar and try another puzzle.
|
||||||
|
|
||||||
|
If you still want to see it, you can get your puzzle input.
|
||||||
|
|
||||||
|
References
|
||||||
|
|
||||||
|
Visible links
|
||||||
|
. https://adventofcode.com/
|
||||||
|
. https://adventofcode.com/2020/about
|
||||||
|
. https://adventofcode.com/2020/events
|
||||||
|
. https://adventofcode.com/2020/settings
|
||||||
|
. https://adventofcode.com/2020/auth/logout
|
||||||
|
. Advent of Code Supporter
|
||||||
|
https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://adventofcode.com/2020/leaderboard
|
||||||
|
. https://adventofcode.com/2020/stats
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://en.wikipedia.org/wiki/Customs_declaration
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/day/6/input
|
111
2020/day07/problem
Normal file
111
2020/day07/problem
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
# Advent of Code
|
||||||
|
|
||||||
|
--- Day 7: Handy Haversacks ---
|
||||||
|
|
||||||
|
You land at the regional airport in time for your next flight. In fact, it looks like
|
||||||
|
you'll even have time to grab some food: all flights are currently delayed due to issues in
|
||||||
|
luggage processing.
|
||||||
|
|
||||||
|
Due to recent aviation regulations, many rules (your puzzle input) are being enforced about
|
||||||
|
bags and their contents; bags must be color-coded and must contain specific quantities of
|
||||||
|
other color-coded bags. Apparently, nobody responsible for these regulations considered how
|
||||||
|
long they would take to enforce!
|
||||||
|
|
||||||
|
For example, consider the following rules:
|
||||||
|
|
||||||
|
light red bags contain 1 bright white bag, 2 muted yellow bags.
|
||||||
|
dark orange bags contain 3 bright white bags, 4 muted yellow bags.
|
||||||
|
bright white bags contain 1 shiny gold bag.
|
||||||
|
muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.
|
||||||
|
shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.
|
||||||
|
dark olive bags contain 3 faded blue bags, 4 dotted black bags.
|
||||||
|
vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.
|
||||||
|
faded blue bags contain no other bags.
|
||||||
|
dotted black bags contain no other bags.
|
||||||
|
|
||||||
|
These rules specify the required contents for 9 bag types. In this example, every faded
|
||||||
|
blue bag is empty, every vibrant plum bag contains 11 bags (5 faded blue and 6 dotted
|
||||||
|
black), and so on.
|
||||||
|
|
||||||
|
You have a shiny gold bag. If you wanted to carry it in at least one other bag, how many
|
||||||
|
different bag colors would be valid for the outermost bag? (In other words: how many colors
|
||||||
|
can, eventually, contain at least one shiny gold bag?)
|
||||||
|
|
||||||
|
In the above rules, the following options would be available to you:
|
||||||
|
|
||||||
|
• A bright white bag, which can hold your shiny gold bag directly.
|
||||||
|
• A muted yellow bag, which can hold your shiny gold bag directly, plus some other bags.
|
||||||
|
• A dark orange bag, which can hold bright white and muted yellow bags, either of which
|
||||||
|
could then hold your shiny gold bag.
|
||||||
|
• A light red bag, which can hold bright white and muted yellow bags, either of which
|
||||||
|
could then hold your shiny gold bag.
|
||||||
|
|
||||||
|
So, in this example, the number of bag colors that can eventually contain at least one
|
||||||
|
shiny gold bag is 4.
|
||||||
|
|
||||||
|
How many bag colors can eventually contain at least one shiny gold bag? (The list of rules
|
||||||
|
is quite long; make sure you get all of it.)
|
||||||
|
|
||||||
|
Your puzzle answer was 302.
|
||||||
|
|
||||||
|
The first half of this puzzle is complete! It provides one gold star: *
|
||||||
|
|
||||||
|
--- Part Two ---
|
||||||
|
|
||||||
|
It's getting pretty expensive to fly these days - not because of ticket prices, but because
|
||||||
|
of the ridiculous number of bags you need to buy!
|
||||||
|
|
||||||
|
Consider again your shiny gold bag and the rules from the above example:
|
||||||
|
|
||||||
|
• faded blue bags contain 0 other bags.
|
||||||
|
• dotted black bags contain 0 other bags.
|
||||||
|
• vibrant plum bags contain 11 other bags: 5 faded blue bags and 6 dotted black bags.
|
||||||
|
• dark olive bags contain 7 other bags: 3 faded blue bags and 4 dotted black bags.
|
||||||
|
|
||||||
|
So, a single shiny gold bag must contain 1 dark olive bag (and the 7 bags within it) plus 2
|
||||||
|
vibrant plum bags (and the 11 bags within each of those): 1 + 1*7 + 2 + 2*11 = 32 bags!
|
||||||
|
|
||||||
|
Of course, the actual rules have a small chance of going several levels deeper than this
|
||||||
|
example; be sure to count all of the bags, even if the nesting becomes topologically
|
||||||
|
impractical!
|
||||||
|
|
||||||
|
Here's another example:
|
||||||
|
|
||||||
|
shiny gold bags contain 2 dark red bags.
|
||||||
|
dark red bags contain 2 dark orange bags.
|
||||||
|
dark orange bags contain 2 dark yellow bags.
|
||||||
|
dark yellow bags contain 2 dark green bags.
|
||||||
|
dark green bags contain 2 dark blue bags.
|
||||||
|
dark blue bags contain 2 dark violet bags.
|
||||||
|
dark violet bags contain no other bags.
|
||||||
|
|
||||||
|
In this example, a single shiny gold bag must contain 126 other bags.
|
||||||
|
|
||||||
|
How many individual bags are required inside your single shiny gold bag?
|
||||||
|
|
||||||
|
Your puzzle answer was 4165.
|
||||||
|
|
||||||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
||||||
|
|
||||||
|
At this point, you should return to your Advent calendar and try another puzzle.
|
||||||
|
|
||||||
|
If you still want to see it, you can get your puzzle input.
|
||||||
|
|
||||||
|
References
|
||||||
|
|
||||||
|
Visible links
|
||||||
|
. https://adventofcode.com/
|
||||||
|
. https://adventofcode.com/2020/about
|
||||||
|
. https://adventofcode.com/2020/events
|
||||||
|
. https://adventofcode.com/2020/settings
|
||||||
|
. https://adventofcode.com/2020/auth/logout
|
||||||
|
. Advent of Code Supporter
|
||||||
|
https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020
|
||||||
|
. https://adventofcode.com/2020/support
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://adventofcode.com/2020/leaderboard
|
||||||
|
. https://adventofcode.com/2020/stats
|
||||||
|
. https://adventofcode.com/2020/sponsors
|
||||||
|
. https://adventofcode.com/2020/day/7/input
|
Loading…
Reference in New Issue
Block a user