How to solve Advent of Code 2022 – Day 6 with Python

If you missed any previous days, click here for all my content about that: Advent of Code, if you want to know why you should participate and try to code the solution for yourself, click here: Advent Of Code 2022 – 7 Reasons why you should participate. If you’re here to see the solution of Day 6, continue reading 😉

GitHub Repository

https://github.com/GalaxyInfernoCodes/Advent_Of_Code_2022

I will upload all of my solutions there – in the form of Python (or Scala alternatives) notebooks. You have to use your own input for the “input.txt” since everyone gets their own and everyone needs to provide a different solution based on their input.

Day 6 Puzzle

Okay, for everyone who has participated or seen the solutions to the last few days – or even just the puzzle for yesterday: what the heck was this today? 😀 Prepare for super short blog post.

On day 6 of Advent of Code, we had to fix the communication device the elves gave us. Which sounds complicated until you read the concrete task at the end.

Part 1

We had to read in a line and find the first 4 distinct characters in a row. We then get the solution from the index of the end of this 4-character-section. Yeah, that’s it. Here’s the code.

with open('example.txt', 'r') as f:
    line = f.readline().strip()

for i in range(len(line)):
    if len(set(line[i:i+4]))==4:
        print(i+4)
        break
  • iterate over the length of the line
  • at each spot check the next 4 characters (line[i:i+4], if you don’t know this syntax search for “list slicing”)
  • convert to a set because a set doesn’t have duplicates
  • if the set is still length 4, there are no duplicates in this part of the string and we found our solution, which is the current index + 4 to return the end of this 4-character sequence

Done 🙂

Part 2

Okay, here we had to the same, but for 14 distinct characters. So just replace every 4 with 14 in the above code:

with open('example.txt', 'r') as f:
    line = f.readline().strip()

for i in range(len(line)):
    if len(set(line[i:i+14]))==14:
        print(i+14)
        break

Conclusion

What the heck. You know what, I’ll take it, I still have a Vlogmas video to edit today *shrug*.

1 comment

  1. the approach of using a set and checking the length is really smart, I used a loop to check if there are any duplicates:
    with open(‘exercise6.txt’, ‘r’) as file:
    data = file.read()
    data=list(data)
    x=14
    while x<len(data):
    letters=data[(x-14):x]
    y=0
    while y < len(letters):
    if letters[y] in letters[:y]:
    break
    y+=1
    if y==len(letters):
    print(x)
    break
    x+=1

Leave a Reply

Consent Management Platform by Real Cookie Banner