Your explanations are what helped me, a first timer, not only complete the problems but also understand the logic behind them. Never stop making vids and thank you for your service.
This was my first year doing AOC, and I'm glad I found your channel. Great explanations every single time, with some cool tidbits along the way (raw strings are a cool thing to know). Also cool to see how concise python can be. Hope to see you next year!
Thank you so much for the excellent explanations. You really helped make this year’s AoC a learning experience! Happy Holiday’s and safe travels. I look forward to the recap video.
18 ชั่วโมงที่ผ่านมา
Thank you very much for your videos. They provided me the insights I needed to complete the AoC 2024 in Haskell.
thank you for all your videos - your explanations are relative easy to understand, to follow what u do and i have learned really a lot from you.. thank you that you did not give up after so many LLM took part this year.. hopefuly "see you" next year :)
Thank your for all the helpful and insightful videos. I started AoC last year, and wouldn't have been able to finish (and optimise) all the puzzles without your awesome explanations and insights. Much appreciated!
Wow that parsing is just next level. It's concise, clean and readable at the same time. It turned out that your initial solution with counting “#” perform the best ~47 ms whereas the others take around 110 ms longer. My initial approach took 10 ms and was based on making sets of tuples with coordinates of “#", which then I simply check if they’re disjointed - if there was none, then it was a match. But my parsing was way more bloated and with more ifs.
It's my first time finishing all 50 stars this year, and I can say for certain I won't have done it without your videos! Thank you for going through your thought process every day, I feel like I learnt a lot about how AoC puzzles worked + new way to work around python! Happy holidays & New Year!
My favorite advent of code channel. You've definitely pulled me though a couple of them. Thanks for taking the time to make these videos. Happy holidays!
Thank you for all your videos and for providing detailed explanations. See you next year! there is one IMHO simple solution - set "theory" 101 - intersection (&) ;-) def solve1(text): blocks = text.split("
") block_rows = blocks[0].splitlines() R = len(block_rows) C = len(block_rows[0]) locks = [] keys = [] for block in blocks: block_lines = block.splitlines() pins = set((r, c) for r in range(R) for c in range(C) if block_lines[r][c] == "#") if all(x == "#" for x in block_lines[0]): locks.append(pins) elif all(x == "#" for x in block_lines[-1]): keys.append(pins) else: assert False return len([1 for lock in locks for key in keys if len(lock & key) == 0])
still apologies for the poor audio/video quality, i am still traveling so i'm still on a laptop with a worse mic
The microphone isn't even half bad. Sounds like the gain is set too high, making it clip the audio
Thank your for your explanations and helping me through this year too!
Your explanations are what helped me, a first timer, not only complete the problems but also understand the logic behind them. Never stop making vids and thank you for your service.
Thank you for your videos and happy holidays !
This was my first year doing AOC, and I'm glad I found your channel. Great explanations every single time, with some cool tidbits along the way (raw strings are a cool thing to know). Also cool to see how concise python can be. Hope to see you next year!
Thank you so much for the excellent explanations. You really helped make this year’s AoC a learning experience! Happy Holiday’s and safe travels. I look forward to the recap video.
Thank you very much for your videos. They provided me the insights I needed to complete the AoC 2024 in Haskell.
thank you for all your videos - your explanations are relative easy to understand, to follow what u do and i have learned really a lot from you.. thank you that you did not give up after so many LLM took part this year..
hopefuly "see you" next year :)
Thank you for your videos! Helped me a lot when I got stuck on some problems
Thank your for all the helpful and insightful videos. I started AoC last year, and wouldn't have been able to finish (and optimise) all the puzzles without your awesome explanations and insights. Much appreciated!
Wow that parsing is just next level. It's concise, clean and readable at the same time. It turned out that your initial solution with counting “#” perform the best ~47 ms whereas the others take around 110 ms longer. My initial approach took 10 ms and was based on making sets of tuples with coordinates of “#", which then I simply check if they’re disjointed - if there was none, then it was a match. But my parsing was way more bloated and with more ifs.
Thank you for making these videos!!
Thank you for your videos! Well explained! :)
It's my first time finishing all 50 stars this year, and I can say for certain I won't have done it without your videos! Thank you for going through your thought process every day, I feel like I learnt a lot about how AoC puzzles worked + new way to work around python! Happy holidays & New Year!
thank you so much for making these videos ❤
My favorite advent of code channel. You've definitely pulled me though a couple of them. Thanks for taking the time to make these videos. Happy holidays!
Thank you for all thorough explanations. Happy holidays!
Thanks to you for make us better developers ❤, see you next year!
Thank you for all your videos and for providing detailed explanations. See you next year!
there is one IMHO simple solution - set "theory" 101 - intersection (&) ;-)
def solve1(text):
blocks = text.split("
")
block_rows = blocks[0].splitlines()
R = len(block_rows)
C = len(block_rows[0])
locks = []
keys = []
for block in blocks:
block_lines = block.splitlines()
pins = set((r, c) for r in range(R) for c in range(C) if block_lines[r][c] == "#")
if all(x == "#" for x in block_lines[0]):
locks.append(pins)
elif all(x == "#" for x in block_lines[-1]):
keys.append(pins)
else:
assert False
return len([1 for lock in locks for key in keys if len(lock & key) == 0])