Advertisement
HexTree

Advent of Code 2023 (Python) - Day 1

Dec 1st, 2023
1,075
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.33 KB | Source Code | 0 0
  1. total_part1 = 0
  2. total_part2 = 0
  3.  
  4. digit_words = {'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6',
  5. 'seven':'7', 'eight':'8', 'nine':'9'}
  6.  
  7. with open('input.txt', 'r') as f:
  8.     for line in f.readlines():
  9.         # part 1
  10.         digits = [char for char in line.strip() if char.isdigit()]
  11.         calib = int(digits[0] + digits[-1])
  12.         total_part1 += calib
  13.  
  14.         # part 2
  15.         s = line.strip()
  16.  
  17.         # first digit
  18.         first_digit = None
  19.         for i in range(len(s)):
  20.             if s[i].isdigit():
  21.                 first_digit = s[i]
  22.                 break
  23.             for word in digit_words:
  24.                 if s[i:].startswith(word):
  25.                     first_digit = digit_words[word]
  26.                     break
  27.             if first_digit:
  28.                 break
  29.  
  30.         # last digit
  31.         last_digit = None
  32.         for i in range(len(s)-1, -1, -1):
  33.             if s[i].isdigit():
  34.                 last_digit = s[i]
  35.                 break
  36.             for word in digit_words:
  37.                 if s[i:].startswith(word):
  38.                     last_digit = digit_words[word]
  39.                     break
  40.             if last_digit:
  41.                 break
  42.  
  43.         calib = int(first_digit + last_digit)
  44.         total_part2 += calib
  45.  
  46. # part 1
  47. print(total_part1)
  48.  
  49. # part 2
  50. print(total_part2)
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement