Day 05: If You Give A Seed A Fertilizer
day05.RdDetails
Part One
You take the boat and find the gardener right where you were told he would be: managing a giant \"garden\" that looks more to you like a farm.
\"A water source? Island Island is the water source!\" You point out that Snow Island isn\'t receiving any water.
\"Oh, we had to stop the water because we ran out of sand to filtertarget="_blank" it with! Can\'t make snow with dirty water. Don\'t worry, I\'m sure we\'ll get more sand soon; we only turned off the water a few days\... weeks\... oh no.\" His face sinks into a look of horrified realization.
\"I\'ve been so busy making sure everyone here has food that I completely forgot to check why we stopped getting more sand! There\'s a ferry leaving soon that is headed over in that direction - it\'s much faster than your boat. Could you please go check it out?\"
You barely have time to agree to this request when he brings up another. \"While you wait for the ferry, maybe you can help us with our food production problem. The latest Island Island Almanactarget="_blank" just arrived and we\'re having trouble making sense of it.\"
The almanac (your puzzle input) lists all of the seeds that need to be
planted. It also lists what type of soil to use with each kind of seed,
what type of fertilizer to use with each kind of soil, what type of
water to use with each kind of fertilizer, and so on. Every type of
seed, soil, fertilizer and so on is identified with a number, but
numbers are reused by each category - that is, soil 123 and fertilizer
123 aren\'t necessarily related to each other.
For example:
seeds: 79 14 55 13
seed-to-soil map:
50 98 2
52 50 48
soil-to-fertilizer map:
0 15 37
37 52 2
39 0 15
fertilizer-to-water map:
49 53 8
0 11 42
42 0 7
57 7 4
water-to-light map:
88 18 7
18 25 70
light-to-temperature map:
45 77 23
81 45 19
68 64 13
temperature-to-humidity map:
0 69 1
1 0 69
humidity-to-location map:
60 56 37
56 93 4The almanac starts by listing which seeds need to be planted: seeds
79, 14, 55, and 13.
The rest of the almanac contains a list of maps which describe how to
convert numbers from a source category into numbers in a destination
category. That is, the section that starts with seed-to-soil map:
describes how to convert a seed number (the source) to a soil number
(the destination). This lets the gardener and his team know which soil
to use with which seeds, which water to use with which fertilizer, and
so on.
Rather than list every source number and its corresponding destination number one by one, the maps describe entire ranges of numbers that can be converted. Each line within a map contains [three numbers]title="Don't blame me for the weird order. Blame LXC container.conf UID mappings.": the destination range start, the source range start, and the range length.
Consider again the example seed-to-soil map:
50 98 2
52 50 48The first line has a destination range start of 50, a source range
start of 98, and a range length of 2. This line means that the
source range starts at 98 and contains two values: 98 and 99. The
destination range is the same length, but it starts at 50, so its two
values are 50 and 51. With this information, you know that seed
number 98 corresponds to soil number 50 and that seed number 99
corresponds to soil number 51.
The second line means that the source range starts at 50 and contains
48 values: 50, 51, \..., 96, 97. This corresponds to a
destination range starting at 52 and also containing 48 values:
52, 53, \..., 98, 99. So, seed number 53 corresponds to soil
number 55.
Any source numbers that aren\'t mapped correspond to the same
destination number. So, seed number 10 corresponds to soil number
10.
So, the entire list of seed numbers and their corresponding soil numbers looks like this:
seed soil
0 0
1 1
... ...
48 48
49 49
50 52
51 53
... ...
96 98
97 99
98 50
99 51With this map, you can look up the soil number required for each initial seed number:
Seed number
79corresponds to soil number81.Seed number
14corresponds to soil number14.Seed number
55corresponds to soil number57.Seed number
13corresponds to soil number13.
The gardener and his team want to get started as soon as possible, so they\'d like to know the closest location that needs a seed. Using these maps, find the lowest location number that corresponds to any of the initial seeds. To do this, you\'ll need to convert each seed number through other categories until you can find its corresponding location number. In this example, the corresponding types are:
Seed
79, soil81, fertilizer81, water81, light74, temperature78, humidity78, location82.Seed
14, soil14, fertilizer53, water49, light42, temperature42, humidity43, location43.Seed
55, soil57, fertilizer57, water53, light46, temperature82, humidity82, location86.Seed
13, soil13, fertilizer52, water41, light34, temperature34, humidity35, location35.
So, the lowest location number in this example is 35.
What is the lowest location number that corresponds to any of the initial seed numbers?
Part Two
(Use have to manually add this yourself.)
(Try using convert_clipboard_html_to_roxygen_md())
Examples
f05a(example_data_05())
#> [1] 35
f05b(strsplit(example_data_05(), "\n",)[[1]])
#> [1] 46