summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreug-vs <eugene@eug-vs.xyz>2023-12-03 20:09:22 +0300
committereug-vs <eugene@eug-vs.xyz>2023-12-03 20:09:22 +0300
commit6c600fb97df06ea34afdd117847d1439e1f8a0cc (patch)
tree142d2d5c7e3521d8a132604d8516c64cc8f10bf7
parent60740f6e984066f47130b5fdd849eedfeb26bf94 (diff)
downloadaoc-2023-6c600fb97df06ea34afdd117847d1439e1f8a0cc.tar.gz
feat(day-3): add first part solution
-rw-r--r--day-3/input.txt141
-rw-r--r--day-3/script.ts36
2 files changed, 177 insertions, 0 deletions
diff --git a/day-3/input.txt b/day-3/input.txt
new file mode 100644
index 0000000..cf28641
--- /dev/null
+++ b/day-3/input.txt
@@ -0,0 +1,141 @@
+.....487.599...........411...........................................574..679.136..........................30......255.......432............
+....*......*............*..........&586..........................375...@..*....../.....835.............610*........./...............582.....
+...833........304...&.862...............203..........922.125...............819.............@....563.....................722..775............
+..............+...994..........#.........*..244.457.....*...........867.........829.....469.....#...........................*...............
+313.....753.....................596............*................270..../........*........................38.......836..850..914......942*215
+........*............10.525.515.......417$........976...........*..............878.613/.......*247.......*........+.........................
+.......725.............*......................848*......236....25.........#605............................602.352...+............505#.619...
+741........872...........899...........596..........824..*............542......#....893........299&...........*......389.....176.......*....
+..........*....691...165....*../.........@...........#..973...........%.....207............435.........296...269...&........*....$..112.....
+...707..311.............@.522.561..........470.................152......524.......964*853.....*...........+......541....578...871...........
+..................*805..................................774...*.....397*....$261..............74............956.........*............451....
+....328..+907..665.............872.=744..745=....../...........21...................-.560..................*.........332....135.......+.....
+......*..........................*................96.................754.........750....@.......803...*..163.....475.........*..............
+...309.......51*................658...633..769..........%426............*191......................./.598.....685*....898......685...........
+.......-.........972%.................*............................39.........220......@....366..........................257...........@....
+.......532.............149..968.......86...690.....933.........800....91*545.*........65..........633..17*609.863*.......&...40....485.185..
+............63........./.......*.426.........*................*..............639............+.....@...............191.......................
+..801.......................425..%.....420..615.816...186*614..783..........................583...............*........&.417...248*.........
+........292.....%.................................+................147.....933........+.......................31....260............563......
+...539...=.......553.....$.....=331.........89.........................688.............586...264........80%.................................
+...*....................964.$...........836*......&./22...#.962.........*../934.625..........*.................$543...284.%...821=.959......
+........285.206..............363..#.............311.....501....=......676.........&.557.........#....................*....713...............
+....................%.............659....493........698...........719.................@.539..810...................119......................
+...................305..554.....................164*........989=.=.....885...46...........*.............426................276..............
+........602................%.849..595...877..........389...................................322.............*...................../...%.930..
+....115...*.........67....................*.......79*....................422.......843................859...771.......355.1...404..103......
+......*..836...94.........758.....90...306....210...........921............$...115..$.......892..923....*..............*....................
+.....806.......*..............................................*................*......809......=.......592.....894...884...152......%.......
+...$.........299.......189..412...142..........................908.........-.891........*....%.............859*...........*.......910.......
+..667.............+457../....*..........................................532......333..418....958.648*889.............%728..99.863.......-...
+...............73............958.....650.....127........=........*480............./..........................99.221.............#...171..532
+.................*......*831.......-...@........*151.901...723.16............113....209......39-.........130*......&...796..........*.......
+.............838.621.985..........588......................%....................=....#.........................../........*380.810.720......
+..317..$304..-...........+.................../851..................93.....846........................+........744........................398
+....*..........156*....614.......134...&18...........109.360.........-.......*....301..=..............509........./206...*349...861.........
+...717.206@..................1=......3...................*....37/.......104..449........599...............$......................%..........
+...............808..............287..-..........724....781..........443*........................&91........485....433..516..............995.
+.....42*254..........706#........&..........................656...............9.........*916.....................&.................$....%...
+.................311.................*........308...................901..............615..........114*10...47*.....875..............593.....
+616*97..&............679*..........657.819...*.....61................*......@....@...........=................375..@...378.718*.............
+.......901...182.695.........47........$...227....$....163............786..217..836..577....151......958...............*.......398..242.....
+.....*..........*.....709.....*..........................*.....182..................+..................*.-....910....106............*....532
+..682.104................*65..941..536..277..............60...%......438.420..254...............97..126...761..@.....................924....
+................$.............................353....8*.................*......../................-..............+..........351.............
+.............893...................801*........#.......246................#.974.........712..................662..594..898...*..958*..324.49
+........899............................731.................#.......225..152...#........*......*403.%...................$...738......6.......
+............821....171............477...........996........556....*..................837...998.....35.............................#.....*...
+.............$.....*.................*............/................19.....614+.891..............................+..............183.......303
+....916.15.......172......#.447*348.823.@....475....381.................................925....432...#.........795..........................
+.......*...183..........578..............94.*......&....305............294....470.443.............+.435.197.................................
+...113....*.....159................783......325...............769-........-..@.....*....249.............*...........993........487.599..719.
+...*.......827...*........179#.........=855........................129............988..........=568...998.715......*......235.....*.....*...
+.991.....+........340............380...............645.*....78........*................929.448..............%.....337.......*........871....
+.....479..273.250...................-..=...............293..$..40.....602...297........*....*.....422.........*..............341............
+...&.............*..........721.839.....455..302.................*.............*.....706....158............742.885...............441........
+.931.....306*499.965.........&...&...........*..........950@....438..515...41..205......................................+....%...%......860.
+.....................301....................182.......................#.....*..........846.......869..624......746...689....677.............
+..143.729.638...%910...*.980..45.................215.539*346.-............651...714......*.......#...*.........=.................45.........
+.....*.......*.......274....%.*......361........*............852.960........../....*539.....390*......31...........................#........
+..........949.................813.33....*612.357..........+.......%..=211...114.................495................200................367...
+.......................434..............................771..849..................................................*...............128*......
+.......865...830..........*..=34...=124..........281............=....*........10.791.........437..................760......*536.............
+.......*....*...........641................144....-....180.........506.139.....@...#.............148....................135.................
+...727..344.972.....573...............418..*.............*.540*.........*.............185....79.*.......241-.272................271.720.....
+......*................*..877..251....#.....170........906.....716..........414..............@...235.........%.....................*........
+.......458.....*362.846...*.....$..................................=....=..*.........407...#...................................441..........
+.....+......334.........995...........690....639.................119.777...674....-...#....974.93........335............816.....*..654......
+..270.......................%............%......*.....475........................910...............................462.........586...*..317.
+........................218..605...856.......894.....-.......%771........288%........632..352.......410........314.&...............952......
+825.64..392.834.......2*............$....164.....540....94..........................*......*........+..........*.........914................
+.....*.....*.................*..........*.......*..........@...........461..678.681.599..906....188.........510............@..398...........
+..991....*.......223.....846.460........814....47..721..113......*257......#.....*....................440.............154......*............
+......225.518...*.....................%...............&.......549......../....28..133............338.....*554.7.............................
+..745............996.....75....@.....88....*...%....*...................772.....*....................618..............44*573................
+..........107@...........*....245........606...949...817.....................114....*944................*........../.................694....
+......128...............269.................................556..................892...........99.....960...608..577............1......#....
+...=....*....*....598...............716.959...763...........*...378........736.........526%..........................309..........559.......
+300...963...345....................*.....@......*..........28..#...............676........../....327................*.....301.........727...
+................457..926.....856..553.........480.@181............912...982.....*........./..40....*......701....843.........*....379.......
+.244*.............*......364...*.........................*........*.....*.......943..=...768....660......*................489...........994.
+.....664...........839.....*.37.............360.......536..379.........872...........623..............122.....*.....-94.......108...320*....
+...........401*710........37.......-..........*..............*..............53*.................$..........868.698........171*..............
+...................#.............572...........943..931...592..................192...91*381......638....................................335.
+398@...728%.....661.....#541.............$363..........*.......701..921.......................&......*416............490*..337-.............
+......................$............531.........54...205.........#.......739.669=..621..488*....6..894...........#.................%.174.....
+..........776........185....97.....*.......$./............................*..........*.....688..............253.998....223......610....*890.
+....#.....*..............&.*........546.270..713............379............797....$............212...275......$.............................
+...399....828.........962...137......................384....*....................599..181......*......%.........228.630/.............504....
+................26*.......................=...........*..820..........982................#.764..79................*.........&........*......
+.....845...........338..277...$..461.#....603.804=.262.......969....................*.......*...............681.212.......782..857..814.....
+...........357*155.....*....486.@....439.....................*...................553.395.....901.................................*..........
+....................210..................../....748*.671......448....+283.................................321.408...............483...+.....
+.....169*95......................449%.....16..........&..........................55.......$....781...579...-...........534...........274....
+690...........154..........239....................883....903.....701.838.............$...467......*...=..................=..................
+.........699....*.........=............15*619.......................*......515....487........................808...............*.....611*121
+.....369.*.....................813..21.................630...................#.................$....................153........11...........
+.358*.....30.......514...........=.%....624......&942.....+....831.....669.......142.282#......835......632.175..$.....*...855..............
+......212..........*........................*148..............*.................#.......................&.....-...382..239...=........486...
+......*........734.211.*...65............696................459......90.&847..#......+..621.....18*251.............................../......
+...684....@............384...*..................650.............957-.*.........12..669....#.................53........618..246..............
+.......249..476...621.........78..243..........*....864...............374.......................389...43..............@...*.........737.....
+...........*.........................*304.220.......*......162................455.&.............................307........895......*...898.
+....=......642.........878..@.............@...883...816...@.......$................273.......210...........235.....*470................*....
+.537...........+........*...135...98..........*..............202.445.......................+..*....907................................78....
+..............102...998.6./........./....853.545.481............................*........56..449...*.........&3..501.13..195......&.........
+.....................*.....442...........*...................................928.111...............428............./....*.........11........
+..319..954...........................52...867...........25............716....................@..............775.......711...................
+....%....%.......286.....313.....116.*...........245.....*.269....520*.............*507...878..............*....520........*648.............
+..............16*......../......@..................*...328.-...........@........919...........419*640...378......*......933.......980.......
+......643....................38...........414.................559....&.612.144*......181........................946.571.....................
+.74...*.....+.........566......*.........-................882*.....249.........504.....=...........34.833...518......*.......276.../177.....
+...*..241..236...........*...93....*.600......924..420.........822........4........&...............#..+........*708...201.......%...........
+.63.................*...531.....685.............*.....*.825...*....&............658...........220..........813.....................426......
+......*98........520.41..................-387.260...51....+...156..601......136.......*......+............*........./......161.....@........
+...862.....96........................297..........%...........................&.786.789...........776.+...528....271........................
+........../.....446...890..%....393....*......43=.178...................519..................-...*....967.............213..796..614.#441....
+..847*87....@........=....704......-..235..............193.......279*......@........*37...535..414..........234.......*.......@...*.........
+...........963............................................@.861......360......@..906....*...............564.=.......85....285...564.........
+....845...............*....469........+...460*989..............=...........884.......877.....738*505.....*.............................500..
+.....*...214...825..18.917...........651...........248.............&....&.......&../......................342....271........644.........+...
+....988...*.....*...........289+.423......287.....*........547&.9..163...613..605..447....73...817..$...........$......=....................
+...............80......900............464*.........729...................................&........=..972.923.........654...852.......150....
+837.174*671.............*.....147.............70...........................170%..............640*........*................=......615*.......
+............878.......282........*............+....................120...........................987..636..950*.$...........................
+...........*.....................731...................-....6.162....@......753.105.678.........................1.........992.......708.....
+...*296.....821...817.....#...........29...-............588..*............@......$..*...202.........+212...2=.......8........*.........+....
+660.....403............579.....873.....*....521..167.......................321......598...........%......%.....721.....825..440.928.........
+.....37........................*.....964........*....622..........402#..........315................626.488.702*...........%.....*...........
+..............783...........71..66..............460...*..+838...........*911....%................................................537...343..
+..........625*...............&.......-......866.....989...............12................950.......................*912......................
+...............121=.&886........=....351........................808........604...898.....*..199...913....433............@....121/...........
+..........................362...120........464...................=.........*....*.......287..@...*........*..........828....................
+..619..815.213......982...$.................*......588...165........544.805...136...870.........964..$....345.............829.......909.....
+...-.../...*.......$..........273-.234....979.617.....=.*..........=...................*..............320.....324.%..........=......../.....
+...........475......................./..........*............718........*......963%....994...................*.....109...644............116.
+...../...............*133.......132..............41.........-...........506........................415.....585............*.................
+.....304..873*633.382.....+............179.............410.......572.........................999...$...106.....+543.....421..887............
+..........................997....925....*........153......*.383...*..50*.............585.102..........@........................*......199...
+.......................................645.1.......+...622.....$.720....518...........*...*.................#........@303.......286.........
+......696..................................................753......................957.715.............396..159...........338.......806....
+
diff --git a/day-3/script.ts b/day-3/script.ts
new file mode 100644
index 0000000..1793e48
--- /dev/null
+++ b/day-3/script.ts
@@ -0,0 +1,36 @@
+import fs from "fs";
+
+const input = fs.readFileSync("./input.txt").toString();
+
+const lineLength = input.split("\n")[0].length;
+
+const chars = input.split("\n").slice(0, -1).join("");
+
+const numbers = Array.from(chars.matchAll(/[\d]+/g)).map((match) => ({
+ number: Number(match[0]),
+ position: {
+ start: match.index || 0,
+ end: (match.index || 0) + match[0].length,
+ },
+}));
+
+const symbols = Array.from(chars.matchAll(/[^\.\d]/g)).map((match) => ({
+ symbol: match[0],
+ position: match.index || 0,
+}));
+
+const result = numbers
+ .filter((number) => {
+ return !!symbols.find(
+ (symbol) =>
+ symbol.position === number.position.start - 1 ||
+ symbol.position === number.position.end ||
+ (symbol.position >= number.position.start - 1 - lineLength &&
+ symbol.position <= number.position.end - lineLength) ||
+ (symbol.position >= number.position.start - 1 + lineLength &&
+ symbol.position <= number.position.end + lineLength),
+ );
+ })
+ .reduce((acc, number) => acc + number.number, 0);
+
+console.log({ result });