summaryrefslogtreecommitdiff
path: root/2023/day3
diff options
context:
space:
mode:
authorBotond Hende <nettingman@gmail.com>2024-12-11 10:18:23 +0100
committerBotond Hende <nettingman@gmail.com>2024-12-11 10:18:23 +0100
commit0a5c1f77d01fc0bd166494787f24562e2fd3a9e9 (patch)
tree99b0d38ef86653b6ff4aae26381ebdf0895f829d /2023/day3
parentcbf5c348db4a693b15e455a23e07072587edf4b0 (diff)
renamed day folders to two digit format
Diffstat (limited to '2023/day3')
-rw-r--r--2023/day3/input140
-rw-r--r--2023/day3/input_test10
-rw-r--r--2023/day3/solve.py46
-rw-r--r--2023/day3/solve2.py104
4 files changed, 0 insertions, 300 deletions
diff --git a/2023/day3/input b/2023/day3/input
deleted file mode 100644
index e51b04f..0000000
--- a/2023/day3/input
+++ /dev/null
@@ -1,140 +0,0 @@
-.......497...........................858...923...128..................227..801........487.....664...........................................
-436........765..............140.......+....................859.............*.........+.................960........668.......................
-...*982...........=..........=....203......266.263...375*....=...402....691..-....................*..........575....................13......
-.............114...588...............*............*......631........*.......952...463..14.......661..........=...706......*333.........595..
-...194.........*..............743...917.&......375.....................................*...............544*.......*....664..................
-...*.....807..452....81..........*......969..#......309*................/....873....941...828.197..........427.728...............566...13...
-.243........*.....80.......329....470.......145.475.....111........*659..259....+........*....%........569..............%.....*....*....*...
-.........130......*....385*............123......................199.......................640.....463..%.........978....920...266..380.83...
-.....323........870.........+...........$.........466......453........................297...........*............*..........................
-........*.=..............588.....*786......$.........*........*.......390*.....886...*....227...728..852.......606....*863.......916..396...
-.....538...287................301........133.....539..........33.537......466..$...793..+..........*...............218.....721........*.....
-...............986.........=.......................................*...%...............222..-.......701.271...............#.........437.....
-......*3.........*.626.68...419...740...........................806...976.......875.........174..............735.............=488...........
-...790.........487....*................./532..13............................*....-.....503..........*11..734..........978.19......622.......
-...................&....712.68=.619+.........*.......................863...596.....2.....*.......160.....+...&659........*.........-....-757
-437*.......#........520...*..........304....568.974.255.318.183.........*.......&.....675......................................849..........
-....161.....687.710.....854.............*.......*......*....&...441......891.....476..........616.......$........235..434.880...*..673+.....
-..................*...............683.....800.120..............*....807..................................707.....*....-....*...74........562
-....@...#988...487..#685..........-......*..............251.146.............................142@....74...........398....769..........238*...
-....848....../................-.$.....662.........773..*...........895.......591...........................233..............................
-797.........611..........@.186...429..........304*....468.....554....*..........*...960......82.......*810...+.534..660....645...313./......
-......239..............509...............720*......................844..939=..508......*...........401............*.......*.......*...649...
-........=........158.......$.....=...........200......409....982.....................46................126.....517....303.647.660...........
-...530....=......*..........704.69...................*.......*..................@879........589..131.................*........*.............
-......*..871...672....................611*........415.......283.569.21....842/........-109.&.......*.......157$...719.......679.$...........
-....664..............664......668.........203....................&...%............................14..................427.......833..484....
-....................*........*.......434.......796...........65............................................-479.126..*..............+.......
-.....382..........121.....836.........*........@...............*789.......624........350&..........*544............$.6.........882....513...
-....%.....406.........................848........625...%...88.........382..+..971.................5......*622...........914....*....%.......
-..............627....816........641..............*.....373./.............*..../...912..651.162........557........901...&.....503.337....59..
-...357...........*.........552...*..816..........240......................636.....*...*.....*.............@..993....*.......................
-......*934....961...=..43..*...324.....@...............726.888....370...........170.805...517........639.389....*..929.................953..
-.16...............408.*...94..................................*......&..............................*......../...9........605...............
-.......571....13......512........591+.......976.......895....489...........751.......474.760.........240.....931............*...............
-...464../..................608..............*........*................$.94*........................................486.......172............
-...*......121........=.....*.......$......909.......583............128........929...................765.............*............+....24....
-.............*.......762....230..422..285.....434......................390.....=.....921.................261....#...949.....382...903.*.....
-............595........................*.......*...................833*..............%.......973..$....@...*.268........506*..........251...
-967...................................25....234...........................306....281..........=..36..918.432....../406........344...$.......
-.....700*610.......=...839......917......33......610@................537....=....@............................%........20.402.@.....926.....
-..............%.768...*....................*...@............93..161.%...............74$......%.........96..298..........%..+............+519
-...........925.......586...................264..85...721....*...*.............................371.................822.=.....................
-...............540...........-....447....................987.....305.............379@.707..............670...397...*..842....552.464........
-.....666......*....844....515.......*..............+114..............977...............&...393........*.........$.800...........*...........
-.....*...647...696..*..............203....................418.....19............522........*.......462................57...786..........561.
-....691.....$.......756...165.....................596.32...%........#..280.259$..........398..............425.............*....719..796.....
-.............../.........=........1/..305............*.........451......&..........332.......706............&.......327.841...........*.....
-.74..........791.............=........+.....................+...-..................+..........*.....................*...............419..371
-...*927..........352.......148..........401....459...+....998......$783........@............444..$.......959..106.366.......................
-............190..........*......385.............*....846......................907.826..585.......447.441..*..*............7......871........
-.................142....944....$.................634.............587..@..930..........*......935.....*...819.29.....3......*35..............
-......967....415*......................=980.....................%....58.-......317..74......../.....922..............-.207........../.......
-.........................................................................................................175....................369.233.....
-.........................+....645.$........%.....620.+429....951......616.................................*............524$.................
-....799...551*602........920..+....503..654....-...*............*....=......395.........451....263.......897..................370...........
-......-.......................................409......970....661.............*............+...*....48...................475..$........839..
-..97...................../.....@497....%..........446$...*...............533..794.....432-.....167...*.....722...486........*...500...*.....
-..............459......540.............110................569............&..................#.....................#........785.*.......455..
-........815....*...........................*452......./......................365.........929....*978.=................709........+..84......
-....427*......466.............608*796..............680......................*......&.........142.....603.................#......621..*......
-.........635............@....................302..................296-.....679...801..290..................464..............980......627....
-....../.../........%...850.......*108....513*........656...*739........715...............@.......713.......*...................*............
-354+..245.......629...........995.....................$..41.....=.....@.....................45..........840......506+...$.....148...........
-..........995.................................&541............914.510.....950...../...........*53..28...................275........138......
-.............*812..665...../.........................101.308..............*......691.482.............*........902.585.......@.......*.......
-.........../........./...292...............#..........-....*....@307......661..........*.210......135....932%...........992..54..191..931...
-...400..649...............................504.196.........88........................581.............................743*.............&......
-...*.........140..............642....891.............309...............................................695......361..............603........
-....170.643#..*.................*....*.......*24.....*....................932.291.....538....461.........*........*..275............&.......
-.............725......494......23...279...713..../....449............*........*...../...=......*..........434..............785..............
-.....991..........946.............................830.........136.439.24...519......289.......408...579........708.650*......*.370.13....410
-......*..887........#..688.673.........218......................-...............941....................$.......%.......927.722....*.........
-....124....*...........*..../....427....*.............312................................................922...........................307..
-...........706...16..934..*.......*......608....459..&..........761.....................647..641...........*.............242............*...
-..5*715..-........+........122.....262........./...........928....%............728..610*......*..502.....222..40.....923..+...........540...
-.........701.............=..............291...............*.........351.........*............141.%............*.../.....*....725............
-..............314.......878....%.......*......=..820*.....988..204.....-.....889......119............797...........395....+.............287.
-..................671........322....101......257.....733........@.....................=.............*..........544......600.......862.......
-..421.......582...%..............................484...............565.....+...831...........695...384.#...592.=............240....../.904..
-....*..........*........570...........&....=........*629......717&.*.......93......726../961....*......535..*........767../......715....*...
-....439.....630............../..%...615...912......................777............*..............602.........567..3........107....$..77.....
-....................914.....3...2.=.............763...&885......................185....182.......................*......-......+............
-...372...383........*..............60.............*............&..38.681...............*.....459....../........117...504......358..480-.....
-............+.990..33...........................834.......@..33......................494....*........181.66+................................
-...............*......*...492..............176..........857...........376.315................954.....................*982.......763.........
-329=..........179....245...*...61...........*...*................%......+....*.....352*509.........952#..69..620..423.............*.........
-.........................131.....*17......191.33.306...../.....144..503......491.............................................298...415......
-...................$...................................426.........*...............526.669.....&498..698...$............447.....+...........
-.............575...142.617......890..............%...............212..730.519.971..&......*384.........@....18.219.........*................
-.......*537..*.........*........*.........677...587..407...120*........./....*...................................+......334..........700....
-....944......636..848........743.....388..*....................109..........................................................540.40..*.......
-.................*....596............*....155..324...820.520.................=...............443...94...........621.276......*..+..910......
-...............276.....-.........376...........*........*....................739......368....=..............428....*......434..........878..
-932....28.....................-..=....207......959....................289.........196.*........................*...............-.......=....
-...*........................172....#.#.....688.........25..944...725...&............*..110.....148...426.483..771../932......800............
-.947............................457....931*.............-....*...#.......834......721.........*.........*.............................477...
-.....*491......*.........*114.................191.....$...213........909*...................194............633....%...792..605.633...#......
-.............108......611.....+719...........*.....696........865...............120................=724...%....950.../......*...../.........
-...320............*.................260/...121.........338...*........719.180.........516.....*.............................649.............
-.....#...643.......941......*160......................*......140...94....*...............*..39.789................*......&.........81...597.
-............*..135.......532.................%90...608............*............+515....743.............+...194.993.669..259..+..............
-.....%....948.....*............262..695.712....................623.....*...................473........602...*...............83......679.....
-..259.............447.............%.*...............363.............105...................@........=......+.........................*.......
-......957....659........299..........................%...599..898.+.................464.......606.237..768..416@....=...............228.....
-.376..$.........*..........*..2.........@557......./.......*.*.....517..........859*.........*....................855...877.427.........*...
-.........*468..535......500....$................117......726.381........428...$................@........43....472.......*...*...........476.
-......517................................951........%............-..249..@.....920...........859........*........*....825.393...15..........
-...........770.......&16.....278...417......$.....626...-23....954.....#..............................868.......502............*............
-.....373..*...................%...*.....254................................................246.#530....................982....179....635....
-......*...538.....................362...-...........162.........................180=........*..................278.......*............+.....
-....138.......922..............................543................6....12....&.............92...150...............*.......994...............
-................+.....+................388....*..........................*....788............../..................220.............834.......
-.....................301.593.597.............500..603......928....966................/.............536.......768.............800............
-................*64........*.../..&.....924.........*........-...$....................203.............-...+..../...............*..423.&451..
-.............453....*......638.....314..*...896....459...............96...................186............581................846....*........
-....&188.........624.400...............268....@...........................664...............*...12.943............#733......................
-.............................597...765................388......149..468.....+............698......*....143........................426.......
-.......................878...*.........875..............*..871*.....*..............929....................$.504*..............473.%.........
-...245..........94.651..*.....915.........*.........40.440........236.................*511.45........994........753..................887....
-...#..............*.....459............212...18*964.*.........=71..........768..827............./.....*......................567............
-.....787.2..781*....................................827....................*...*..............437.....813.......317.....102.....*333........
-..........*.....285............@..-...........304.......821.622.....953...377.997......320....................@./.....%....*..........254...
-.......877..636.....42......772..419.....189..*................&....*.....................=.17......366*....563......228...153..............
-...............*.....$................&....*...839......218.........449......................*..409.....69............................652...
-.....576......255..............593...397............469..%......#.......+568.......374......499....*...........541..477.........%137..*.....
-.......*............@319.................$.35..........*.....207...............808*.................933.737...........*.502............367..
-.....807....219../.....................436......226@...266........215...................................*...................................
-..............*...769.....41*....922............................$..*.......271.........350..........677.346......................662....725.
-..............175............979.*...#........215..............652..39......$....=61......*..154...................................*........
-...426..............335*.........487.194.........*42...................790.............+.750.@......&..............253...337....617..717....
-...+....908.............489.................../............14...278.../....953.......316.......*856.44.50...../.......*................$....
-.........%..90.................437..........848...........................*......714........708..........*223.588.....884....871.801........
-494@..........*..33...........*.........779.....424.550....923............779.......*...340........738.......................*....*..131.603
-.....50..481.........=.....643...........@......%............*.......815......681..263....*........*...5.....256*11.377$....872.903.*.......
-.....*...............635.......698..........583...148........708........................323.243..201.....................*..........377.132.
-...502........883............/..*..............$...*....994.........*....479@.................$......804.443..........584...................
-.............*..............893..581..534........376..+..........174.119.........138............670...*....$.834............4...............
-.....+....234...904.323..=..............&.894..........439.@838............*.....*........47........555........*............*........932....
-...594............*...$.654.....+.........*........................84.*....7...231.$102.......286.......*760....817.......719.........*.....
-..................620............806......866.................559......440...........................310...........................590..547. \ No newline at end of file
diff --git a/2023/day3/input_test b/2023/day3/input_test
deleted file mode 100644
index 624ea4f..0000000
--- a/2023/day3/input_test
+++ /dev/null
@@ -1,10 +0,0 @@
-467..114..
-...*......
-..35..633.
-......#...
-617*......
-.....+.58.
-..592.....
-......755.
-...$.*....
-.664.598.. \ No newline at end of file
diff --git a/2023/day3/solve.py b/2023/day3/solve.py
deleted file mode 100644
index bc84dc0..0000000
--- a/2023/day3/solve.py
+++ /dev/null
@@ -1,46 +0,0 @@
-from typing import List
-
-def is_part_number(lines:List[str], column_count: int, row_pos: int, column_start: int, column_end: int) -> bool:
- min_column = max(column_start - 1, 0)
- min_row = max(row_pos - 1, 0)
- max_column = min(column_end + 1, column_count - 1)
- max_row = min(row_pos + 1, len(lines) - 1)
-
- for row_idx in range(min_row, max_row + 1):
- for col_idx in range(min_column, max_column + 1):
- char = lines[row_idx][col_idx]
- if char != "." and not char.isdigit():
- return True
-
- return False
-
-def add_if_part_number(result: int, lines:List[str], column_count: int, row_pos: int, column_start: int, column_end: int) -> int:
- if is_part_number(lines, column_count, row_pos, column_start, column_end):
- result += int(lines[row_pos][column_start:column_end + 1])
-
- return result
-
-
-data = []
-with open("input") as f:
- for line in f.readlines():
- data.append(line.strip())
-
-result = 0
-
-columns = len(data[0])
-for row_idx, line in enumerate(data):
- number_start_idx = -1
- for ii in range(columns):
- if line[ii].isdigit():
- if number_start_idx == -1:
- number_start_idx = ii
- elif number_start_idx != -1:
- result = add_if_part_number(result, data, columns, row_idx, number_start_idx, ii - 1)
- number_start_idx = -1
-
- if number_start_idx != -1:
- result = add_if_part_number(result, data, columns, row_idx, number_start_idx, columns - 1)
-
-print(result)
-
diff --git a/2023/day3/solve2.py b/2023/day3/solve2.py
deleted file mode 100644
index 5b23f13..0000000
--- a/2023/day3/solve2.py
+++ /dev/null
@@ -1,104 +0,0 @@
-class Gear:
- def __init__(self, line_idx, column_idx):
- self.line_idx = line_idx
- self.column_idx = column_idx
- self.connecting_parts = []
-
-
-def add_part_to_gear(line_idx, column_idx, part_number_line_idx, part_number_column_idx, gears):
- for gear in gears:
- if gear.line_idx == line_idx and gear.column_idx == column_idx:
- gear.connecting_parts.append((part_number_line_idx, part_number_column_idx))
- break
- else:
- new_gear = Gear(line_idx, column_idx)
- new_gear.connecting_parts.append((part_number_line_idx, part_number_column_idx))
- gears.append(new_gear)
-
-
-def check_if_part_number(line_index, column_index, lines, gears):
- ret_val = False
-
- current_line = lines[line_index]
- if column_index > 0 and current_line[column_index - 1] != ".":
- if current_line[column_index - 1] == "*":
- add_part_to_gear(line_index, column_index - 1, line_index, column_index, gears)
- ret_val = True
-
- max_column_index = column_index
- for index in range(column_index + 1, len(current_line)):
- if not current_line[index].isdigit():
- break
- max_column_index = index
-
- if max_column_index + 1 < len(current_line) and current_line[max_column_index + 1] != ".":
- if current_line[max_column_index + 1] == "*":
- add_part_to_gear(line_index, column_index + 1, line_index, column_index, gears)
- ret_val = True
-
- min_other_column_index = max(column_index - 1, 0)
- max_other_column_index = min(max_column_index + 1, len(current_line) - 1)
-
- if line_index > 0:
- other_line = lines[line_index - 1]
- for current_column_index in range(min_other_column_index, max_other_column_index + 1):
- other_char = other_line[current_column_index]
- if not other_char.isdigit() and other_char != ".":
- if other_char == "*":
- add_part_to_gear(line_index - 1, current_column_index, line_index, column_index, gears)
- ret_val = True
-
- if line_index + 1 < len(lines):
- other_line = lines[line_index + 1]
- for current_column_index in range(min_other_column_index, max_other_column_index + 1):
- other_char = other_line[current_column_index]
- if not other_char.isdigit() and other_char != ".":
- if other_char == "*":
- add_part_to_gear(line_index + 1, current_column_index, line_index, column_index, gears)
- ret_val = True
-
- return ret_val
-
-
-def main():
- lines = []
- positions = []
- gears = []
- with open("input", "r") as f:
- for line in f:
- lines.append(line.strip())
-
- part_numbers = []
-
- parsed_number = None
- is_part_number_parsed = False
- for line_index, line in enumerate(lines):
- for column_index, char in enumerate(line):
- if not char.isdigit():
- if is_part_number_parsed:
- part_numbers.append(int(parsed_number))
-
- parsed_number = None
- is_part_number_parsed = False
- elif parsed_number is not None:
- parsed_number += char
- else:
- parsed_number = char
- is_part_number_parsed = check_if_part_number(line_index, column_index, lines, gears)
- if is_part_number_parsed:
- positions.append((line_index, column_index))
-
- if is_part_number_parsed:
- part_numbers.append(int(parsed_number))
- parsed_number = None
- is_part_number_parsed = False
-
- gears = [gear for gear in gears if len(gear.connecting_parts) == 2]
- ratios = []
- for gear in gears:
- ratios.append(part_numbers[positions.index(gear.connecting_parts[0])] * part_numbers[positions.index(gear.connecting_parts[1])])
- print(sum(ratios))
-
-
-if __name__ == '__main__':
- main()