{
    "componentChunkName": "component---src-templates-post-js",
    "path": "/blog/aoc22/day1",
    "result": {"data":{"markdownRemark":{"html":"<p><a href=\"https://adventofcode.com/2022/day/1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Read the problem here on Advent of Code</a></p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">elves <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>  <span class=\"token comment\"># List of calories each elf is carrying</span>\n\n<span class=\"token comment\"># Open file in read mode</span>\n<span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"day1/input.txt\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"r\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> f<span class=\"token punctuation\">:</span>\n    <span class=\"token comment\"># Counter variable to keep track of current elf calories</span>\n    current_elf_calories <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n    <span class=\"token comment\"># Using a while loop, read each line</span>\n    <span class=\"token keyword\">while</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">:</span>\n        <span class=\"token comment\"># Read line</span>\n        line <span class=\"token operator\">=</span> f<span class=\"token punctuation\">.</span>readline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n        <span class=\"token comment\"># If line is blank push current elf's calories to the list</span>\n        <span class=\"token comment\"># and continue reading the next one and reset the counter</span>\n        <span class=\"token keyword\">if</span> line <span class=\"token operator\">==</span> <span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">:</span>\n            elves<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>current_elf_calories<span class=\"token punctuation\">)</span>\n            current_elf_calories <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n        <span class=\"token comment\"># If end of file, break out of the loop</span>\n        <span class=\"token keyword\">elif</span> <span class=\"token keyword\">not</span> line<span class=\"token punctuation\">:</span>\n            elves<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>current_elf_calories<span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">break</span>\n        <span class=\"token comment\"># Else add the current line value to the current elf's calorie count</span>\n        <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n            current_elf_calories <span class=\"token operator\">+=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>line<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Now that we have our parsed data, we can go about solving both the problems</span>\n\n<span class=\"token comment\">################################## PART 1 ##################################</span>\nhighest_calorie_elf <span class=\"token operator\">=</span> <span class=\"token number\">0</span>  <span class=\"token comment\"># index of the elf having the most calories</span>\n<span class=\"token comment\"># Finding the max number of calories</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>elves<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token comment\"># If elf at i has more calories than the previously stored index,</span>\n    <span class=\"token comment\"># then update the stored index</span>\n    <span class=\"token keyword\">if</span> elves<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">></span> elves<span class=\"token punctuation\">[</span>highest_calorie_elf<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n        highest_calorie_elf <span class=\"token operator\">=</span> i\n<span class=\"token comment\"># Print the values for the elf carrying most calories</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>\n    <span class=\"token string\">\"Elf number\"</span><span class=\"token punctuation\">,</span>\n    highest_calorie_elf <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"is carrying the most calories, having\"</span><span class=\"token punctuation\">,</span>\n    elves<span class=\"token punctuation\">[</span>highest_calorie_elf<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">\"calories in total!\"</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\">################################## PART 2 ##################################</span>\n<span class=\"token comment\"># We just sort the list for the top three elves</span>\n<span class=\"token comment\"># (doing manually because list.sort() is too easy)</span>\n<span class=\"token comment\"># Linear sort</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>elves<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">,</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>elves<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> elves<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;</span> elves<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n            <span class=\"token comment\"># The cool python way of swapping values without a temp variable</span>\n            elves<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> elves<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> elves<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> elves<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span>\n\n<span class=\"token comment\"># add and print top x elves</span>\nsum_calories <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\ncount <span class=\"token operator\">=</span> <span class=\"token number\">3</span> <span class=\"token comment\"># change this to calculate however many we want to add</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>count<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    sum_calories <span class=\"token operator\">+=</span> elves<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"The sum of calories carried by the top three elves is\"</span><span class=\"token punctuation\">,</span> sum_calories<span class=\"token punctuation\">)</span>\n</code></pre></div>","frontmatter":{"title":"Advent Of Code - Day1","description":"Solving Advent Of Code problems using Python.","date":"2022-12-02T00:00:00.000Z","slug":"/blog/aoc22/day1","tags":["AdventOfCode2022","Python"]}}},"pageContext":{}},
    "staticQueryHashes": ["1994492073","2009693873","3081057667","3825832676"]}