From 208377019ea6100792e09b7b3ad6dea1f762ac5f Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Wed, 9 Dec 2020 14:41:45 +0000 Subject: [PATCH] Day 9 --- 09/input | 1000 +++++++++++++++++++++++++++++++++++++++++++++++++++ 09/part1.js | 23 ++ 09/part2.js | 35 ++ 3 files changed, 1058 insertions(+) create mode 100644 09/input create mode 100644 09/part1.js create mode 100644 09/part2.js diff --git a/09/input b/09/input new file mode 100644 index 0000000..ca08b38 --- /dev/null +++ b/09/input @@ -0,0 +1,1000 @@ +3 +48 +30 +21 +18 +50 +9 +37 +5 +31 +17 +39 +14 +45 +27 +23 +2 +4 +19 +35 +10 +32 +33 +28 +7 +34 +11 +6 +8 +12 +54 +13 +9 +15 +16 +60 +64 +17 +14 +18 +20 +23 +24 +25 +19 +21 +26 +22 +27 +46 +28 +29 +30 +31 +32 +38 +33 +37 +45 +63 +34 +35 +39 +51 +40 +41 +43 +60 +44 +47 +52 +58 +62 +55 +57 +59 +61 +64 +100 +65 +95 +73 +71 +69 +103 +74 +82 +83 +108 +147 +160 +87 +117 +91 +112 +107 +176 +114 +116 +148 +120 +125 +133 +190 +134 +152 +205 +183 +156 +216 +199 +202 +174 +211 +219 +194 +178 +198 +203 +223 +221 +354 +418 +236 +258 +323 +259 +267 +286 +469 +308 +489 +330 +439 +372 +368 +392 +527 +401 +611 +414 +521 +419 +424 +444 +457 +793 +494 +495 +594 +609 +702 +553 +722 +700 +638 +698 +773 +740 +895 +1130 +815 +951 +833 +838 +843 +868 +1535 +1239 +1282 +952 +1578 +1398 +1794 +2496 +1725 +1360 +1293 +1336 +1378 +1671 +1438 +1513 +1635 +2895 +1648 +1653 +1681 +2203 +2491 +1711 +2671 +2191 +2617 +2234 +2245 +2776 +2629 +2653 +4306 +2731 +2774 +2714 +2816 +5288 +2951 +3073 +3148 +4139 +3301 +5492 +4282 +5847 +8038 +3902 +3945 +5264 +8578 +8412 +4479 +4874 +5592 +5505 +5367 +5445 +5488 +5530 +5665 +5767 +6449 +8789 +7203 +7093 +9967 +7246 +14243 +13050 +8424 +12691 +9433 +9450 +9353 +10144 +15649 +12734 +10241 +10812 +10855 +13954 +14234 +11432 +14191 +17097 +12216 +14873 +14296 +15517 +26882 +15670 +23596 +17777 +24440 +17857 +18786 +39113 +18803 +19497 +23028 +21053 +21096 +21667 +22287 +23071 +41164 +35634 +23648 +26407 +26512 +27089 +40885 +29813 +48756 +45298 +36766 +36563 +36580 +40470 +41784 +40550 +38300 +44124 +40593 +70698 +84717 +43383 +43954 +67195 +64198 +50055 +85689 +60228 +63173 +53601 +83933 +87082 +77236 +73143 +73329 +73346 +78347 +77130 +78850 +110283 +78893 +82254 +83976 +114652 +110578 +93438 +87337 +117250 +103656 +113228 +113829 +116774 +123401 +126744 +126930 +150273 +146472 +183721 +151490 +146675 +150476 +180786 +189176 +263449 +201166 +210212 +187632 +297560 +197094 +190993 +180775 +339652 +230002 +216884 +277017 +230603 +273877 +376808 +273216 +273402 +293147 +296948 +367360 +297151 +327450 +474568 +361561 +368407 +371768 +377869 +378625 +490761 +388087 +411378 +397659 +503819 +446886 +447487 +490100 +504005 +720703 +571028 +671772 +546618 +566549 +590095 +594099 +624601 +658712 +689011 +729968 +733329 +740175 +1030480 +756494 +766712 +785746 +799465 +809037 +1135897 +894373 +936986 +1218700 +1246594 +1050623 +1140717 +1471237 +1113167 +1171219 +1156644 +1313612 +2055631 +1763809 +1347723 +1418979 +1463297 +1523206 +2187124 +1661085 +1542240 +1552458 +1722732 +1703410 +2186520 +2007540 +2679850 +2698884 +2163790 +2893951 +2191340 +2253884 +2269811 +2284386 +2327863 +2470256 +2766702 +3070455 +2811020 +2870929 +4890224 +2986503 +3203325 +3094698 +3213543 +3275190 +5837157 +3426142 +3710950 +5364207 +4335403 +5753205 +5569813 +4355130 +5704971 +8664511 +5198792 +8564225 +4612249 +9131113 +5236958 +5577722 +8450501 +12090653 +5857432 +17695338 +17454860 +6416868 +9003864 +8690533 +6701332 +7137092 +7761545 +8947652 +8967379 +9534195 +9553922 +9592088 +26385871 +13618977 +13687459 +12994524 +14141947 +9849207 +10814680 +18299708 +15449520 +18042589 +12274300 +12558764 +17353633 +18559467 +13118200 +26681983 +27136471 +13838424 +14898637 +16709197 +22548446 +40823930 +19383402 +19146010 +19441295 +34282039 +24747844 +32158717 +22843731 +20663887 +55722567 +23088980 +24833064 +26112724 +29912397 +36794928 +25676964 +30471833 +36386870 +26956624 +51285507 +39552928 +28737061 +53723334 +38529412 +58935316 +41989741 +38587305 +39809897 +43752867 +45411731 +43507618 +45496951 +45932711 +47620511 +47922044 +48765944 +50510028 +54414025 +52633588 +55693685 +70709491 +57428457 +67324366 +84462123 +82094923 +83317515 +123343079 +89610252 +85306848 +78397202 +80577046 +85742608 +83562764 +88919349 +128907230 +89440329 +91429662 +94698655 +98130539 +100555632 +143854354 +165454905 +178707585 +108327273 +113122142 +186724475 +299846617 +145721568 +158974248 +160492125 +237151230 +174917100 +326591559 +164139810 +170017375 +166319654 +169305372 +221449415 +178359678 +233294683 +180869991 +329594715 +192829194 +241984893 +208882905 +479136123 +254048841 +387242583 +258843710 +687089200 +339844239 +373022715 +356969004 +319466373 +324631935 +375202559 +330459464 +333445182 +350175363 +335625026 +362134566 +809595587 +373699185 +359229669 +500336364 +510464706 +434814087 +450867798 +462931746 +467726615 +615812714 +584508305 +1006555573 +692594030 +693165558 +644098308 +658077117 +649925837 +829931079 +694854695 +978191321 +663904646 +1066293215 +709405032 +697759592 +869694375 +732928854 +1117652452 +943737974 +1132573679 +961332504 +885681885 +913799544 +930658361 +1488008196 +1200321019 +1293913337 +1294024145 +1302175425 +1341857900 +1308002954 +1313830483 +1344780532 +1625237150 +1358759341 +1407164624 +1361664238 +1827057484 +1430688446 +1567453967 +1212510616 +2269335458 +1799481429 +2086002904 +1816340246 +1844457905 +2126310160 +2114120563 +3120970821 +2412831635 +2559080360 +2506423953 +2506534761 +2837853070 +2675494721 +2520513570 +2526341099 +2557291148 +2571269957 +2619675240 +2574174854 +3615821675 +3247028692 +3298513520 +3326631179 +5201835820 +3643939334 +6203019694 +3930460809 +3660798151 +5900806033 +4240430723 +5088326356 +4919255588 +4919366396 +5065615121 +5012958714 +5027048331 +6218114188 +5094688424 +6142162774 +5083632247 +5818298649 +5190945197 +5918188760 +9534010435 +6545542212 +8849827205 +6625144699 +9244819939 +8862633971 +7304737485 +7591258960 +12399425909 +7901228874 +9159686311 +9159797119 +9838621984 +9932214302 +9932325110 +10040007045 +10096590961 +10110680578 +15352309084 +17483058156 +13446900259 +14216403659 +11009243846 +21348129133 +12463730972 +19199804164 +13170686911 +16557359001 +13929882184 +14895996445 +19768468457 +15492487834 +24148617961 +17060915185 +18319483430 +20028916071 +37519287594 +31186751117 +19972332155 +21049250891 +20136598006 +41185848897 +21119924424 +33984872116 +23472974818 +28939388093 +25905240291 +24179930757 +25634417883 +36260719349 +51449169778 +43501890889 +39797384528 +28825878629 +62810750745 +38965462652 +39641105795 +84687739786 +37197513191 +38291815585 +40001248226 +49814348640 +75226182001 +40108930161 +41256522430 +43609572824 +44592899242 +45299855181 +62165959640 +60440650106 +50085171048 +64599880535 +53005809386 +54460296512 +65086597978 +79906314689 +81901388409 +66023391820 +67117694214 +75489328776 +76162975843 +76838618986 +109192779777 +142607022990 +112251130688 +93114739547 +119060177047 +81365452591 +111323247001 +95385026229 +88202472066 +89892754423 +185355755620 +136361684921 +103090980434 +104545467560 +120483688332 +129168785229 +119546894490 +169953358533 +133141086034 +141512720596 +142862010806 +165041091052 +151652304619 +153001594829 +158204071577 +271199199109 +391682887441 +169567924657 +171258207014 +339521283190 +176750478820 +270681505825 +543335192060 +178095226489 +192983734857 +207636447994 +232259765663 +222637874924 +224092362050 +240030582822 +248715679719 +252687980524 +346318403477 +274653806630 +309856376196 +311205666406 +321220229276 +426306111249 +324259801843 +584510182826 +340826131671 +547157731184 +543858104200 +766495979124 +546897676767 +354845705309 +523369486349 +504189401263 +402187588539 +433014317679 +472808041769 +859163989456 +446730236974 +712043964735 +527341787154 +620972210107 +562544356720 +598913608473 +585859473036 +825409630539 +666051371715 +930495512512 +979911994446 +679105507152 +827653747078 +743013720210 +757033293848 +990588341174 +787860022988 +801575942283 +1507253781600 +835201906218 +1364120299003 +848917825513 +1206831683143 +919538278743 +1514307413370 +974072024128 +1089886143874 +1148313997261 +1161457965193 +1148403829756 +1918491259041 +1264964980188 +1656639712889 +1345156878867 +1422119227362 +2180903707271 +1436138801000 +2355677079743 +1500047014058 +1544893316836 +2818097678082 +2368289648336 +1650493767796 +1754740184961 +2493470876128 +2063958168002 +1768456104256 +2576177991632 +2080996243936 +2950446214370 +2526024944874 +2238289973630 +2296717827017 +2413368809944 +2648450843814 +3268503118314 +2845203892925 +4248211061089 +2781295679867 +2858258028362 +4018783416132 +2936185815058 +4704641919314 +3313349421092 +3195387084632 +3405233952757 +3418949872052 +3523196289217 +5081805525348 +4494365053880 +3832414272258 +5258572702869 +5232903642075 +8952852980403 +6508736505724 +7555290529886 +7807714474972 +5584636658872 +8780023743504 +5794443843420 +6171607449454 +6200245551919 +10666442184220 +5639553708229 +8638137594832 +9366994534086 +6355135687110 +6600621037389 +10341150777982 +8834940792861 +7913314925932 +7355610561475 +8326779326138 +9417050931130 +13979321924426 +13199408806344 +10491476344944 +10817540300947 +16541396329901 +11224190367101 +12800866589308 +11379080502292 +11433997551649 +11811161157683 +11839799260148 +11994689395339 +13552868634161 +18166296844793 +12240174745618 +12955756724499 +18579800928576 +21112723732276 +16748255718793 +16772661492605 +15682389887613 +15268925487407 +17743830257268 +28588054978941 +20641241298231 +26780188513734 +22331275605092 +40497572449885 +23674172297267 +23428686946988 +27522189147761 +23245158709332 +22813078053941 +23273796811797 +28583822650288 +29704012443292 +27922564633231 +40823997395906 +43454319352172 +25195931470117 +30699586981767 +30951315375020 +60655327818312 +32455051380218 +43204579035374 +33012755744675 +55728848192015 +49229296277172 +42972516903323 +59792944258409 +45144353659033 +52012509597276 +50950876094749 +46058236763273 +57226201591053 +46086874865738 +48441090179449 +48009009524058 +84028576431280 +53118496103348 +80464060904276 +105659992374393 +56147246845137 +57650982850335 +94985026500599 +61650902356787 +63406366755238 +78541926245956 +79099630610413 +98959885618807 +75985272647998 +130050506705162 +88116870562356 +89030753666596 +91202590422306 +93585443838482 diff --git a/09/part1.js b/09/part1.js new file mode 100644 index 0000000..0b9dc1c --- /dev/null +++ b/09/part1.js @@ -0,0 +1,23 @@ +const fs = require('fs'); +const PREAMBLE_SIZE = 25; + +fs.readFile('input', (err, data) => { + if (err) throw err; + let input = data.toString().trim().split("\n").map((line) => Number(line) ); + + let buf = input.slice(0, PREAMBLE_SIZE); + for(pos=PREAMBLE_SIZE;pos buf.forEach((b) => { if (a != b) sums.add(a+b); })); + + if (!sums.has(next)) { + console.log(next); + break; + } + + buf = buf.slice(1, 25); + buf.push(next); + } +}); diff --git a/09/part2.js b/09/part2.js new file mode 100644 index 0000000..0af49da --- /dev/null +++ b/09/part2.js @@ -0,0 +1,35 @@ +const fs = require('fs'); +const PREAMBLE_SIZE = 25; + +function breakIt(input, target) { + for (i=0;i a+b)) { + console.log(Math.min(...subset) + Math.max(...subset)) + return; + } + } + } +} + +fs.readFile('input', (err, data) => { + if (err) throw err; + let input = data.toString().trim().split("\n").map((line) => Number(line) ); + + let buf = input.slice(0, PREAMBLE_SIZE); + for(pos=PREAMBLE_SIZE;pos buf.forEach((b) => { if (a != b) sums.add(a+b); })); + + if (!sums.has(next)) { + breakIt(input, next); + return; + } + + buf = buf.slice(1, 25); + buf.push(next); + } +});