73 lines
4.2 KiB
HTML
73 lines
4.2 KiB
HTML
|
|
||
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1, text/html, charset=UTF-8" http-equiv="Content-Type">
|
||
|
</meta>
|
||
|
<title>Day 5 - Advent of Code 2021</title>
|
||
|
<style type="text/css">
|
||
|
body {
|
||
|
margin: 30px auto;
|
||
|
max-width: 650px;
|
||
|
line-height: 1.4;
|
||
|
padding: 0 10px;
|
||
|
}
|
||
|
h1, h2, h3 {
|
||
|
line-height: 1.2;
|
||
|
}
|
||
|
</style>
|
||
|
</head><div id="readability-page-1" class="page"><article><h2>--- Day 5: Hydrothermal Venture ---</h2><p>You come across a field of <a href="https://en.wikipedia.org/wiki/Hydrothermal_vent" target="_blank">hydrothermal vents</a> on the ocean floor! These vents constantly produce large, opaque clouds, so it would be best to avoid them if possible.</p>
|
||
|
<p>They tend to form in <em>lines</em>; the submarine helpfully produces a list of nearby <span title="Maybe they're Bresenham vents.">lines of vents</span> (your puzzle input) for you to review. For example:</p>
|
||
|
<pre><code>0,9 -> 5,9
|
||
|
8,0 -> 0,8
|
||
|
9,4 -> 3,4
|
||
|
2,2 -> 2,1
|
||
|
7,0 -> 7,4
|
||
|
6,4 -> 2,0
|
||
|
0,9 -> 2,9
|
||
|
3,4 -> 1,4
|
||
|
0,0 -> 8,8
|
||
|
5,5 -> 8,2
|
||
|
</code></pre>
|
||
|
<p>Each line of vents is given as a line segment in the format <code>x1,y1 -> x2,y2</code> where <code>x1</code>,<code>y1</code> are the coordinates of one end the line segment and <code>x2</code>,<code>y2</code> are the coordinates of the other end. These line segments include the points at both ends. In other words:</p>
|
||
|
<ul>
|
||
|
<li>An entry like <code>1,1 -> 1,3</code> covers points <code>1,1</code>, <code>1,2</code>, and <code>1,3</code>.</li>
|
||
|
<li>An entry like <code>9,7 -> 7,7</code> covers points <code>9,7</code>, <code>8,7</code>, and <code>7,7</code>.</li>
|
||
|
</ul>
|
||
|
<p>For now, <em>only consider horizontal and vertical lines</em>: lines where either <code>x1 = x2</code> or <code>y1 = y2</code>.</p>
|
||
|
<p>So, the horizontal and vertical lines from the above list would produce the following diagram:</p>
|
||
|
<pre><code>.......1..
|
||
|
..1....1..
|
||
|
..1....1..
|
||
|
.......1..
|
||
|
.112111211
|
||
|
..........
|
||
|
..........
|
||
|
..........
|
||
|
..........
|
||
|
222111....
|
||
|
</code></pre>
|
||
|
<p>In this diagram, the top left corner is <code>0,0</code> and the bottom right corner is <code>9,9</code>. Each position is shown as <em>the number of lines which cover that point</em> or <code>.</code> if no line covers that point. The top-left pair of <code>1</code>s, for example, comes from <code>2,2 -> 2,1</code>; the very bottom row is formed by the overlapping lines <code>0,9 -> 5,9</code> and <code>0,9 -> 2,9</code>.</p>
|
||
|
<p>To avoid the most dangerous areas, you need to determine <em>the number of points where at least two lines overlap</em>. In the above example, this is anywhere in the diagram with a <code>2</code> or larger - a total of <code><em>5</em></code> points.</p>
|
||
|
<p>Consider only horizontal and vertical lines. <em>At how many points do at least two lines overlap?</em></p>
|
||
|
</article><p>Your puzzle answer was <code>5774</code>.</p><article><h2 id="part2">--- Part Two ---</h2><p>Unfortunately, considering only horizontal and vertical lines doesn't give you the full picture; you need to also consider <em>diagonal lines</em>.</p>
|
||
|
<p>Because of the limits of the hydrothermal vent mapping system, the lines in your list will only ever be horizontal, vertical, or a diagonal line at exactly 45 degrees. In other words:</p>
|
||
|
<ul>
|
||
|
<li>An entry like <code>1,1 -> 3,3</code> covers points <code>1,1</code>, <code>2,2</code>, and <code>3,3</code>.</li>
|
||
|
<li>An entry like <code>9,7 -> 7,9</code> covers points <code>9,7</code>, <code>8,8</code>, and <code>7,9</code>.</li>
|
||
|
</ul>
|
||
|
<p>Considering all lines from the above example would now produce the following diagram:</p>
|
||
|
<pre><code>1.1....11.
|
||
|
.111...2..
|
||
|
..2.1.111.
|
||
|
...1.2.2..
|
||
|
.112313211
|
||
|
...1.2....
|
||
|
..1...1...
|
||
|
.1.....1..
|
||
|
1.......1.
|
||
|
222111....
|
||
|
</code></pre>
|
||
|
<p>You still need to determine <em>the number of points where at least two lines overlap</em>. In the above example, this is still anywhere in the diagram with a <code>2</code> or larger - now a total of <code><em>12</em></code> points.</p>
|
||
|
<p>Consider all of the lines. <em>At how many points do at least two lines overlap?</em></p>
|
||
|
</article><p>Your puzzle answer was <code>18423</code>.</p></div>
|