CINXE.COM
Day 8 - Advent of Code 2022
<!DOCTYPE html> <html lang="en-us"> <head> <meta charset="utf-8"/> <title>Day 8 - Advent of Code 2022</title> <link rel="stylesheet" type="text/css" href="/static/style.css?31"/> <link rel="stylesheet alternate" type="text/css" href="/static/highcontrast.css?1" title="High Contrast"/> <link rel="shortcut icon" href="/favicon.png"/> <script>window.addEventListener('click', function(e,s,r){if(e.target.nodeName==='CODE'&&e.detail===3){s=window.getSelection();s.removeAllRanges();r=document.createRange();r.selectNodeContents(e.target);s.addRange(r);}});</script> </head><!-- Oh, hello! Funny seeing you here. I appreciate your enthusiasm, but you aren't going to find much down here. There certainly aren't clues to any of the puzzles. The best surprises don't even appear in the source until you unlock them for real. Please be careful with automated requests; I'm not a massive company, and I can only take so much traffic. Please be considerate so that everyone gets to play. If you're curious about how Advent of Code works, it's running on some custom Perl code. Other than a few integrations (auth, analytics, social media), I built the whole thing myself, including the design, animations, prose, and all of the puzzles. The puzzles are most of the work; preparing a new calendar and a new set of puzzles each year takes all of my free time for 4-5 months. A lot of effort went into building this thing - I hope you're enjoying playing it as much as I enjoyed making it for you! If you'd like to hang out, I'm @ericwastl@hachyderm.io on Mastodon and @ericwastl on Twitter. - Eric Wastl --> <body> <header><div><h1 class="title-global"><a href="/">Advent of Code</a></h1><nav><ul><li><a href="/2022/about">[About]</a></li><li><a href="/2022/events">[Events]</a></li><li><a href="https://teespring.com/stores/advent-of-code" target="_blank">[Shop]</a></li><li><a href="/2022/auth/login">[Log In]</a></li></ul></nav></div><div><h1 class="title-event"> <span class="title-event-wrap">int y=</span><a href="/2022">2022</a><span class="title-event-wrap">;</span></h1><nav><ul><li><a href="/2022">[Calendar]</a></li><li><a href="/2022/support">[AoC++]</a></li><li><a href="/2022/sponsors">[Sponsors]</a></li><li><a href="/2022/leaderboard">[Leaderboard]</a></li><li><a href="/2022/stats">[Stats]</a></li></ul></nav></div></header> <div id="sidebar"> <div id="sponsor"><div class="quiet">Our <a href="/2022/sponsors">sponsors</a> help make Advent of Code possible:</div><div class="sponsor"><a href="https://sentry.io/" target="_blank" onclick="if(ga)ga('send','event','sponsor','sidebar',this.href);" rel="noopener">Sentry.io</a> - More than 3.5 million developers across 85,000 organizations ship better software, faster, with Sentry. What are you waiting for?</div></div> </div><!--/sidebar--> <main> <article class="day-desc"><h2>--- Day 8: Treetop Tree House ---</h2><p>The expedition comes across a peculiar patch of tall trees all planted carefully in a grid. The Elves explain that a previous expedition planted these trees as a reforestation effort. Now, they're curious if this would be a good location for a <a href="https://en.wikipedia.org/wiki/Tree_house" target="_blank">tree house</a>.</p> <p>First, determine whether there is enough tree cover here to keep a tree house <em>hidden</em>. To do this, you need to count the number of trees that are <em>visible from outside the grid</em> when looking directly along a row or column.</p> <p>The Elves have already launched a <a href="https://en.wikipedia.org/wiki/Quadcopter" target="_blank">quadcopter</a> to generate a map with the height of each tree (<span title="The Elves have already launched a quadcopter (your puzzle input).">your puzzle input</span>). For example:</p> <pre><code>30373 25512 65332 33549 35390 </code></pre> <p>Each tree is represented as a single digit whose value is its height, where <code>0</code> is the shortest and <code>9</code> is the tallest.</p> <p>A tree is <em>visible</em> if all of the other trees between it and an edge of the grid are <em>shorter</em> than it. Only consider trees in the same row or column; that is, only look up, down, left, or right from any given tree.</p> <p>All of the trees around the edge of the grid are <em>visible</em> - since they are already on the edge, there are no trees to block the view. In this example, that only leaves the <em>interior nine trees</em> to consider:</p> <ul> <li>The top-left <code>5</code> is <em>visible</em> from the left and top. (It isn't visible from the right or bottom since other trees of height <code>5</code> are in the way.)</li> <li>The top-middle <code>5</code> is <em>visible</em> from the top and right.</li> <li>The top-right <code>1</code> is not visible from any direction; for it to be visible, there would need to only be trees of height <em>0</em> between it and an edge.</li> <li>The left-middle <code>5</code> is <em>visible</em>, but only from the right.</li> <li>The center <code>3</code> is not visible from any direction; for it to be visible, there would need to be only trees of at most height <code>2</code> between it and an edge.</li> <li>The right-middle <code>3</code> is <em>visible</em> from the right.</li> <li>In the bottom row, the middle <code>5</code> is <em>visible</em>, but the <code>3</code> and <code>4</code> are not.</li> </ul> <p>With 16 trees visible on the edge and another 5 visible in the interior, a total of <code><em>21</em></code> trees are visible in this arrangement.</p> <p>Consider your map; <em>how many trees are visible from outside the grid?</em></p> </article> <p>To play, please identify yourself via one of these services:</p> <p><a href="/auth/github">[GitHub]</a> <a href="/auth/google">[Google]</a> <a href="/auth/twitter">[Twitter]</a> <a href="/auth/reddit">[Reddit]</a> <span class="quiet">- <a href="/about#faq_auth">[How Does Auth Work?]</a></span></p> </main> <!-- ga --> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-69522494-1', 'auto'); ga('set', 'anonymizeIp', true); ga('send', 'pageview'); </script> <!-- /ga --> </body> </html>