From c46a0e188e1f0b341c73004bb2abac91dd2adaee Mon Sep 17 00:00:00 2001 From: ImAlpha Date: Wed, 20 Dec 2023 23:52:20 -0800 Subject: [PATCH] improved regex pattern --- Advent_of_Code/2023/Day 1/p2.py | 68 +++++++++++++++++++----------- Advent_of_Code/2023/Day 1/test.txt | 9 +--- 2 files changed, 45 insertions(+), 32 deletions(-) diff --git a/Advent_of_Code/2023/Day 1/p2.py b/Advent_of_Code/2023/Day 1/p2.py index ce5bfad..a701028 100644 --- a/Advent_of_Code/2023/Day 1/p2.py +++ b/Advent_of_Code/2023/Day 1/p2.py @@ -1,4 +1,5 @@ import os +import re cwd = os.path.dirname(os.path.abspath(__file__)) @@ -9,33 +10,50 @@ advent = os.path.join(cwd, file_name) nums = [] values = [] -test = 'two1nine' +# test = "eighthree" -numbers = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9} +# numbers = { +# 'one': 1, 'two': 2, 'three': 3, 'four': 4, +# 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9 +# } +numbers_to_string = { + 'one': '1', 'two': '2', 'three': '3', 'four': '4', + 'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9' +} -if numbers in advent: - break -else - -# with open(advent, 'r') as file: -# for line in file: -# for digit in line: -# if digit.isdigit(): -# nums.append(digit) -# if len(nums) < 2: -# num_one = nums[0] -# num_two = num_one -# num_join = num_one + num_two -# values.append(int(num_join)) -# else: -# num_one = nums[0] -# num_two = nums[-1] -# num_join = num_one + num_two -# values.append(int(num_join)) -# nums.clear() -# # print(values) -# print(sum(values)) +with open(advent, 'r') as file: + for line in file: # Read lines + # Split the line when a digit has been found + digit_index = re.findall(r'(?:(one|two|three|four|five|six|seven|eight|nine)|(\d))', line) + # print(digit_index) + if digit_index: + # Use the tuple method to find if the value is present + for num,num2 in digit_index: + # Always the spelled out number, convert to string digit + if num: + # if num in numbers: + # nums.append() + nums.append(numbers_to_string[num]) + # Pass the string digit + if num2: + nums.append(num2) + print(nums) + # values.append() + if len(nums) < 2: + num_one = nums[0] + num_two = num_one + num_join = num_one + num_two + values.append(int(num_join)) + else: + num_one = nums[0] + num_two = nums[-1] + num_join = num_one + num_two + values.append(int(num_join)) + nums.clear() + # print(values) + # print(sum(values)) + # print(numbers_as_integers) -# file.close() \ No newline at end of file +file.close() \ No newline at end of file diff --git a/Advent_of_Code/2023/Day 1/test.txt b/Advent_of_Code/2023/Day 1/test.txt index 4316a6b..76a65b9 100644 --- a/Advent_of_Code/2023/Day 1/test.txt +++ b/Advent_of_Code/2023/Day 1/test.txt @@ -1,7 +1,2 @@ -two1nine -eightwothree -abcone2threexyz -xtwone3four -4nineeightseven2 -zoneight234 -7pqrstsixteen \ No newline at end of file +9vxfg +eighthree \ No newline at end of file