diff --git a/03/03p2.py b/03/03p2.py new file mode 100755 index 0000000..1810086 --- /dev/null +++ b/03/03p2.py @@ -0,0 +1,51 @@ +#!/usr/bin/python + +sol = 0 +inputfile = open("input.txt", "r") +lines = inputfile.readlines() +nums = {} +gears = {} +numindex = 0 +for line in range(len(lines)): + tempnums = {} + tempnum = "" + tempindex = -1 + tempgears = {} + for index in range(len(lines[line])): + tempchar = lines[line][index] + if tempchar.isdigit(): + tempnum += tempchar + if tempindex < 0: + tempindex = index + else: + if tempnum != "" and tempindex >= 0 : + for i in range(tempindex, index): + tempnums[i] = (numindex, tempnum) + tempnum = "" + tempindex = -1 + numindex += 1 + if tempchar == '*': + tempgears[index] = (line, index) + if tempnum != "" and tempindex >= 0: + for i in range(tempindex, index): + tempnums[i] = (numindex, tempnum) + nums[line] = tempnums + gears[line] = tempgears +for ykey in gears: + for xkey in gears[ykey]: + neighlist = {} + startx = xkey - 1 + endx = xkey + 1 + starty = ykey - 1 + endy = ykey + 1 + for y in range(starty, endy + 1): + for x in range(startx, endx + 1): + if y in nums and x in nums[y]: + if nums[y][x][0] not in neighlist: + neighlist[nums[y][x][0]] = nums[y][x][1] + if len(neighlist) == 2: + temp = 1 + for i in neighlist.values(): + temp *= int(i) + sol += temp +print(sol)