#advent-of-code

1 messages · Page 19 of 1

flat sequoia
#

ok

#

i fixed it

#

i finished so slowly it didn't even tell me my rank

#

wow

magic oxide
#

where's enira gone

naive stone
#

i didn't get the joke until you made me give it a second thought lol

pine tiger
#

I'M FREE

#

lmao how am i still in 2nd

simple raven
#

difficult day 😦 I still don't know how to approach this

pine tiger
#

||dp||

#

or do you not want hints

simple raven
# pine tiger ||dp||

even hearing this doesn't really tell me what to do 😄 need to learn sth new to solve this

pine tiger
#

oh, unfortunate

#

want me to link some resources for you?

simple raven
#

sure, this is outside of problems I normally encounter so I'll gladly take some help

pine tiger
normal dragon
#

This is a problem where you should not be expected to "discover" the algorithm on your own.

#

So yeah researching how to do it is 10000% valid

pine tiger
#

the general gist here is uh

atomic cairn
#

Aoc is now a math challenge lol

pine tiger
#

||building the solution based on states on step at a time||

#

||now you can probably think of this as memoized recursion, and it probably is||

simple raven
#

I don't even know how to account for the already existing # vs ? in my program yet 😄 I hope I learn something new and solve this by the end of today 🙂 thanks

pine tiger
#

alright glgl

magic oxide
#

is the brute force not gonna work for p2?

covert arrow
#

I doubt it

magic oxide
#

k

pine tiger
#

you can try

magic oxide
#

I have a ||dp solution|| formulated in my head, just don't have time to code it yet

#

brute force would be quick and easy tho so I'm asking in advance

covert arrow
pine tiger
#

just get a better computer smh

magic oxide
#

oh ||do the cases get that large?||

#

||they looked relatively small from a glance at my input||

#

ig ||the dp isn't too bad here||

pine tiger
#

we're talking p2 so

magic oxide
#

oh

#

I haven't seen p2 then yet

zenith elbow
#

RIP I wrote a ||dp|| sol then realized the '#' must be together and not just nCr

covert arrow
magic oxide
#

thx

lime fulcrum
#

Not quite sure how I am going to solve this

magic oxide
#

oh god I think I have a cursed solution involving ||popping from a list while iterating over it||

flat sequoia
flat sequoia
#

you don't have to do anything super clever it's just a matter of working thru all the cases

#

like it's not one that you just

#

if you don't know you don't know

#

it'll take a while but i think you can get to the solution on your own

magic oxide
#

I think I agree

#

but I haven't actually coded it up yet so idk

cyan sleet
#

||for p1 just bruteforcing seems very doable||

broken dock
#

||for part 2 though you will have to cache your answers and re-use them||

broken dock
cyan sleet
#

php will probably be my bigger enemy today...

broken dock
#

if you draw out decision trees enough you'll eventually come to realize ||"hey, wait a minute, some of these subtrees are identical and we can save time by caching them"||

lime fulcrum
#

So try to draw it out. I will try that

hollow belfry
#

can someone help me with today? i made recursive solution, it solves p1 under a sec but it fails to do part 2 for some reason, idk why

#

i have been trying for some time now

broken dock
hollow belfry
#

it solves p2 under a sec

broken dock
#

if you're doing what I think you're doing, then you're on the right track, and as a matter of fact the solution you have now probably looks almost exactly like the intended solution

hollow belfry
#

but wrong

broken dock
#

oh nevermind, then you just set it up wrong

#

well since someone already posted the link here, i'm going to assume I can do the same

hollow belfry
#

it solves p1 successfulyl

#

but not p2

#

same func

broken dock
#

i'm aware, i read your messages

#

it seems you were lucky

#

that, or you're setting up your ||dynamic programming|| incorrectly

#

i'm inclined to think you're probably doing the second

#

since the chances of the first happening are super low

broken dock
hollow belfry
#

but different inputs

broken dock
#

right, so you're dealing with edge cases

hollow belfry
#

probably

broken dock
#

if you're positive that you adjoined the input correctly

hollow belfry
broken dock
#

then that can only mean it was wrong from the start

broken dock
hollow belfry
#

i have no ideas on what i missed

hollow belfry
broken dock
#

dms

covert arrow
stable ivy
#

quit yo

lavish terrace
#

I gotta say. I am completely stumped on today's AOC. any hints?

zenith elbow
#

if you're on part 1, ||bruteforce|| is actually feasible, do you have any ideas on how that can be done?

lavish terrace
#

yeah I can see that I probably could do that from the input data, but that feels like it's going to royally **** me over in part 2

zenith elbow
#

well a faster algorithm would also explore all the cases, actually, but due to the ||recursive|| nature some ||memoisation|| could be used

lavish terrace
#

hmmm

#

well. I may have to rethink my bruteforce then, I wasn't going to use ||recursion||

zenith elbow
#

maybe you're already getting the same benefits ||memoisation|| provides through your approach? you could solve part 1 first and see if it takes too long on part 2

pine tiger
normal dragon
lavish terrace
#

yeah idk if i'm being stupid but I can't actually figure out how to do even part 1

zenith elbow
#

what was your existing idea that you said didnt need ||recursion||?

lavish terrace
#

bad

#

lmao

#

||generate all possible combinations for things with itertools.product or something and then substitute them in and check validity||

zenith elbow
#

I think that could work

#

maybe you made a mistake somewhere in the implementation?

lavish terrace
#

yeah but it's going to be glacially slow surely

#

I didn't implement anything yet

zenith elbow
#

never know until you start coding ;)

lavish terrace
#

im 99.9% sure that's going to take a very long time

pine tiger
#

man idt a problem has...angered me since this one

#

like i coded a brute force solution that like tried to match up substrings to regions

#

that was taking too long

#

my first thought wasn't "hm, let's cache the results"

#

it was "oh this ENTIRE APPROACH" must be wrong

#

next morning, i code it up in like 15 minutes

#

and it works wonderfully

#

even faster than my 2d array approach last night

dense osprey
#

solved yesterdays problem (day 11)
and wasnt part 1 and part 2 the same??
||i just multiplied my prefix sum difference by 1e6-1 instead of 1||

#

how did other people solve it?

#

was there some solution for part 1 which didnt work for part 2

fallow viper
#

anyone still working on day 1?

covert arrow
#

depends on your implementation

dense osprey
#

||did people simulate the expansion?||

covert arrow
#

if you ||physically expanded the space|| then it wouldn't work for p2

dense osprey
#

i was thinking about doing it first, but i was too lazy to implement it

fallow viper
#

i can't get the second part of day 1 - my sample input works and gives correct answer and from what i can see my code is calculating correctly. but it's not getting right answer with the actual given input

woven sable
covert arrow
dense osprey
#

how did you guys solve part 2?

woven sable
#

i got stuck on part 1 tho bc the test input works but not my real input

dense osprey
#

curious if there were other solutions i dont know of

woven sable
#

||are we supposed to use djkstras instead of astar?||

dense osprey
normal dragon
dense osprey
#

today ig

woven sable
simple raven
woven sable
#

haven't looked at today yet

dense osprey
#

it was just manhattan distance

woven sable
#

shortest path?

covert arrow
woven sable
#

how would u find it then

#

j ||brute force every single path||

#

like ||bfs or sum||

dense osprey
woven sable
#

oh my god 😭

#

i did way too much

pine tiger
#

it's a bit more complicated than ^ but yeeah

dense osprey
#

😭

woven sable
#

i spent 2 hours on it 💀

dense osprey
#

oh

simple raven
dense osprey
#

you atleast practiced your d implementation

woven sable
#

true

#

i couldn't figure out how to do d so i did a*

covert arrow
#

prefix sum is very smart

woven sable
#

i still haven't finished d10p2 but i was thinking of j doing ||raycasting||

simple raven
#

I got completely shut down by today's problem though. I tried learning ||dynamic programming approach|| but I can't use it in practice yet 😦 might come back to it eventually on an easier day

pine tiger
simple raven
pine tiger
#

a ||brute force with caching(!!) is just much easier to understand and implement||

#

see my rant above lol

dense osprey
simple raven
simple raven
woven sable
#

lowk might give up tho based on what ppl are saying ab d12 bc im like 3 days behind now bc of school

dense osprey
pine tiger
simple raven
dense osprey
#

but my ray algo had some weird bug

#

the final result was 1 above the solution

simple raven
dense osprey
#

ill do day12 now

#

but im not good at dp

magic oxide
#

dw me neither

dense osprey
#

always avoided doing any dp

#

it sounds so difficult

#

intimidating

woven sable
#

what's ||dp?||

magic oxide
#

should prolly spoiler those

woven sable
#

for day12p1 the solution looks like j ||brute forcing every combination and splitting it into their respective groups and then add any that match right?||

magic oxide
#

that would work, sure

#

||won't work for p2 without modifications tho||

woven sable
#

damn alright

dense osprey
#

||dynamic programming||

woven sable
#

💀

woven sable
#

ohh

#

||caching?||

woven sable
#

might have to switch to python atp ||i'm not tryna make a cache and allat for kotlin 😭||

covert arrow
#

yes, ||dp|| is basically just ||@functools.cache||

dense osprey
magic oxide
dense osprey
#

all numbers in todays input are one digit right?

rocky spire
dense osprey
#

iterated through the pairs of galaxies

dense osprey
#

for part 1

woven sable
#

question on ab day 12

#

say u have a group requiring an arrangement of like 1, 2 and 3 broken springs

#

woild ###.##.# satisfy that or only #.##.###?

#

oops nvm

#

didn't read it correctly 😭

rich delta
#

Guys for yesterdays qn part 1 , for sample grid isnt the distance coming out to be 384 instead of 374??

woven sable
#

nah it shld be 374

rich delta
pine tiger
#

ru sure you're expanding the galaxy correctly?

rancid creek
rancid creek
gloomy kernel
#

we are on that stage of the aoc arent we

rich delta
#

Thankyou

dense osprey
lime fulcrum
#

so I don't think I get day 12. bit too much for me

simple raven
dense osprey
lime fulcrum
#

that doesn't really tell me anything XD

dense osprey
#

(my algo has a bug but ik that the idea is correct)

dense osprey
lime fulcrum
#

i know what it is but not how to apply it here yet. will give it a day or two

modern terrace
#

naive bruteforce for day 12 part 1 is fine if you can wait a few seconds

dense osprey
modern terrace
dense osprey
#

dp for part 1?

#

oh

modern terrace
#

and by bruteforcing i mean simulating each and every change with an ||itertools.product('.#', repeat=springs.count('?'))||

modern terrace
lime fulcrum
#

what is the wow?

rapid wolf
#

The first knowledge check IG.

lime fulcrum
#

I don't know about first. 5 and 10 were hard

rapid wolf
#

5 and 10 are about coming up with an algorithm, 12 all but requires some basic knowledge of algorithmization techniques.

lime fulcrum
#

fair. I did not know about ||cash|| for instance. I'll think some more on it

dense osprey
#

I FINALLY FOUND MY BUG

#

TOOK ME 2HOURS

#

it was an obvious bug

#

but i wasnt able to find it

#

the bug was: ||if all blocks were used, i just added 1 to solution without checking if there were #s later in the string||

smoky finch
#

is day 8 part 2 ||supposed to be a huge number? its taking forever to run||

ripe meteor
#

Yes

smoky finch
#

roughly how big?

ripe meteor
#

14 digits

smoky finch
#

is that a joke

#

i dont think my 1 million steps every second is gonna cut it then 😭

#

yeah alright i figured out how to solve it

dense osprey
#

what problem was day 8

#

ah the lcm one

#

my bruteforce for part 2 is way too slow

drifting anchor
#

so is mine

cyan sleet
#

Ok, I'll give credit where it's due, this was a good task. Part 1 easy enough to brute-force, part 2 basically infeasible with brute-force and you need to do something clever

drifting anchor
#

what is the clever 👀

cyan sleet
#

A lot of problems in AoC end up not doing the second

#

some flavor of ||dynamic programming||

#

I ended up writing the good solution for part 1 since I couldn't be bothered to write a brute force one and I kinda expected the twist 😛

dense osprey
#

its pretty trivial

#

im just bad at it

cyan sleet
#

granted, the twist I was actually expecting was "concatenate all inputs"

drifting anchor
#

what part was ||optimised||

#

the entire solve part?

cyan sleet
cyan sleet
dense osprey
#

but i just wanted part 1 to be done

#

and worry about the implementation after reading what part 2 wants me to do

cyan sleet
#

in my head either approach was roughly equally annoying to write

drifting anchor
# cyan sleet wdym?

the part that ||checks if the combination of damaged and operational records equals the contiguous groups||

cyan sleet
#

I'm just not sure what you're asking about, the computation of the number of ways you can do things is what's being sped up

#

just the overall way of computing the answer

#

it's not just a small change to a brute force solution

dense osprey
#

the part i have trouble with is the ? being added between the string when they are added

#

idk why

cyan sleet
#

(maybe if you ||did it recursive|| you could ||memoize|| and get stuff for free)

drifting anchor
#

whats ||memoize||?

dense osprey
#

memory

#

memoize

cyan sleet
#

"oh I solved this (sub)problem before, let me re-use that result"

dense osprey
cyan sleet
#

yeah ok, trying to solve the task I had in my head might actually be quite hard 😅

#

huh, neat, ignoring the obvious issue of overflowing like crazy, C++ can actually solve that in reasonable time

#

~5s

#

so if the question was to count the number of ways modulo some number that would be totally doable

drifting anchor
#

is ||itertools.product|| a suitable way to get all the possible combinations for part 2

dense osprey
#

if cpp takes 5s

cyan sleet
#

lol, I'm scared to even try

drifting anchor
#

what other ways are thbere

cyan sleet
#

be more cleverer

drifting anchor
#

💀

#

i got 15 mins bro

magic oxide
#

||dp||

cyan sleet
#

we did point to the relevant topic

drifting anchor
#

idk how to ||dp|| it

dense osprey
magic oxide
#

mull over it ig

cyan sleet
#

C++ is already at like 750M I think

#

just for the array

#

actually...

#

you don't even need a full array

dense osprey
cyan sleet
#

yeah

#

(also this might be too spoilery for this channel)

dense osprey
#

nvm idk what i wanted to say

#

ill try part 2 tmrw

#

but i have to study for exams too

cyan sleet
# drifting anchor idk how to ||dp|| it

this was how I defined my thing
||```perl

DP formulation:

How many ways can we put the first i segments into the first j

spaces. Also keep track of whether it's a forced blank from an earlier segment.

dp[i][j][forced]

drifting anchor
#

thx

cyan sleet
#

there might be nicer ways though, I feel like the last thing can be removed with some cleverness

dense osprey
#

3d

#

yea i wont even try part 2

cyan sleet
#

3d doesn't really mean much

#

it's not like you're visualizing a cube or anything

#

and it's probably doable to get rid of the last axis, it just fir how I was thinking about the problem

dense osprey
#

i wont be able to solve the coin problem in lesd than 30minutes

#

i cant even solve leetcode dp problems

cyan sleet
#

@hidden musk have you bailed on aoc? 😭

#

death by fortran

hidden musk
#

I will prevail! eventually

#

soon™️

rancid creek
woven sable
#

finally finished day 10 after trying to catch up

#

i used ||shoelace's theorem and picks theorem, pretty nice cuz i only had to add 2 lines of code||

flat sequoia
#

It's basically just recursing into subproblems and slapping a cache on it

#

I think the problem yesterday is approachable in the sense that like

#

there's not really anything clever in the transition

#

If you approach it methodically (for example, looking at the first character a time) and think through the possibilities you can pretty reasonably build out a recursive solution, it might just take some time because there are a decent few things to think about

#

And then from there realizing you can cache intermediate results to avoid recomputing things isn't too hard

flat sequoia
# flat sequoia there's not really anything clever in the transition

I'm not saying it's easy but like, for example, a character-by-character solve where you see ?#?.?#? and think about the ? and how it can be either a # or a . and figure out that the state you need to keep track of is (chars left, current block, blocks left) to be able to recurse is actually pretty discoverable

#

There's only a tiny bit of additional state you need to keep track of that's not the problem itself, you don't need to do any clever transformation of the state matrix, there is a small fixed set of ways you can transition, you don't need any weird binary searches or math tricks to reduce

#

It's definitely not one of those things like if you either know it or not (e.g. CRT)

#

There's a clear sequence of smaller things to think about and solve to build up the solution, it's not like one big revelation

magic oxide
#

I think you could definitely figure something out just by doing cases by hand and a bit of thinking without any background knowledge in dp

flat sequoia
#

Yeah

#

An example of a DP technique where this isn't really the case is the O(nlogn) solution to Longest Increasing Subsequence

#

where you have this weird transposition of the state matrix

#

and you binary search to transition

#

or even the O(n²) solution to Longest Increasing Subsequence since to transition you loop thru a bunch of previous things and sum them up

#

In the character by character solution there's only ever one state where you make two recursive calls

#

Every other state is either as base case or immediately reduces down to a single other state

flat sequoia
#

it's the worst name in all of CS and Math

woven sable
#

when i first heard it i thought it was something to do with like dynamically programming something itself like a dynamic website or sum

normal dragon
# flat sequoia I mean i don't think the basic concept of dynamic programming is difficult to gr...

Then you were missing what my point was, which is that||, for most people, this isn't a possible day to solve if you don't already know the underlying algorithm.

Do you already have a foundational understanding of Dynamic Programming? Have you done a few problems in it, and understand the general approach to solving it? Great! You can figure out Day 12 Part 2.

If you don't have that, then this is a nearly impossible day to solve--to organically 'discover' the underlying problem-solving technique on your own. Some AoC problems are like that.||

rancid creek
#

And if not, it IS perfectly acceptible and expected to google "how to make my code faster" or just ask here.

minor cave
#

Language Roulette: Day 13
The language is ... Elixir

rancid creek
#

This is supposed to be a fund AND educational event.

zenith elbow
#

oh no, only 10 mins left

rancid creek
#

10 minutes to start googling Elixir, and what is elixir. 🙂

woven sable
#

if it looks hard i'm going to sleep 💀

rancid creek
woven sable
#

oh yeah cuz it's a weekday now right

mossy basin
#

still a week before the hardest ones

woven sable
#

honestly idk why this year has j been harder for me, maybe it's cuz im doing it in a new language but day 5 & today were awfully hard for me 😭

mossy basin
#

i was so close to top 100 yesterday 😦

#

i am slow tho

covert arrow
#

I choked so hard on p2 yesterday I won't even call it a choke anymore

rancid creek
#

I didn't even start until 1/2 hour after it came out .

#

😐

zenith elbow
# normal dragon Then you were missing what _my_ point was, which is that||, for most people, thi...

||I think if someone has good problem-solving foundations, it's possible for them to work out the recursive solution and logically think of caching even if they've not properly studied dp
but if the "average computer programmer" does not have solid problem solving experience it might be a bit hard for them to stay on the right track and implement it -- even if they thought about the right solution, without guidance or experience they might easily resort to thinking it wont work any point in time during implementation||

rancid creek
#

Not that I would have made top 100, but top 1000 is a good target.

magic oxide
#

I'm outside again so probably can't

earnest forge
magic oxide
#

hope today isn't too bad

mossy basin
#

i try to finish early so i can start visualization early so i dont stay up all night

magic oxide
woven sable
#

i think i gave up too early for part 2 today, bc i just tried to think of a solution in my head instead of trying to come up w a ||dp|| solution on paper

magic oxide
#

would be weird if I stayed inside all the time

woven sable
#

wish i didn't live on the east coast for aoc lowk

mossy basin
earnest forge
#

That sounds entirely reasonable

covert arrow
mossy basin
#

imagine furiously typing during a lecture

woven sable
zenith elbow
earnest forge
#

Oh yeah, got east/west the wrong way round mb lol

rancid creek
#

I just want to finish asap consume a bottle of nyquil and fall asleep.

earnest forge
#

At least you don't live in the UK (5AM)

woven sable
#

damn wtf

mossy basin
woven sable
#

i could never get up that early for aoc

rancid creek
covert arrow
#

my school timetable lines up perfectly for aoc

#

lunchtime is 12:45-13:45, aoc opens at 1pm

earnest forge
#

Lol nice

covert arrow
#

I just have to sacrifice my lunch, which is acceptable

#

GLHF

earnest forge
#

10s left, GLHF everyone

shut trellisBOT
zenith elbow
#

I hope today's is ad-hoc

woven sable
#

can there be multiple lines of reflection i'm confused why it says each line of vertical reflection

#

oh nvm

magic oxide
#

oh p1 doesn't look too bad

woven sable
#

looks like a fun problem today

magic oxide
#

should be a quick leaderboard fill up unless p2 is hell

woven sable
#

yeah this is the first problem in a while i've thought of a solution pretty quick lmao

#

j too lazy to get on my computer and code it

#

tmrw ig

covert arrow
#

noooo

#

i entered a ' while hitting enter

earnest forge
#

I'm getting the wrong answer and I can't tell why :(

covert arrow
#

same

woven solar
#

what does part2 even mean

hexed axle
#

Sub 15 minutes today

woven solar
#

maybe after some hours I'll understand why it did.

minor cave
earnest forge
#

Wtf, leaderboard is full and I'm still stuck on p1

covert arrow
#

same

flat sequoia
#

I rewrote my code halfway through p1 lol

#

I should have just done that from the start

flat sequoia
pine tiger
#

what was even going on today

#

i spent like 10 whole minutes just on off by one bullcrappery

earnest forge
#

As far as I can tell my problem isn't even an off-by-one

fervent helm
#

I pressed backspace+enter now i have to wait smh

earnest forge
#

Doing it manually for a grid near the start of my input I get the same answer as my code

#

Also it passes the test

#

Like wtf

earnest forge
#

No!

flat sequoia
#

wait you're doing even mirrors and not odd mirrors right

earnest forge
#

?

flat sequoia
#

010 vs 0110

#

should be the latter

earnest forge
#

Yes, 0110

flat sequoia
#

hm

pine tiger
#

for me i just ||printed out the range i should be going through for each line||

flat sequoia
#

Honestly restarting might be the move

#

There were a bunch of issues in my original code that i didn't know what was wrong

pine tiger
#

i personally would not recommend

flat sequoia
#

so I just restarted and wrote it cleanly

earnest forge
pine tiger
#

if it's any comfort to you, p2 is trivial this time

earnest forge
#

That would be great, if I could get me p1 working

pine tiger
earnest forge
#

How would that help

#

In fact, what do you even mean lol

pine tiger
#

uh sorry i'm like kind of assuming that you're doing the same approach as me

#

which is really dumb

flat sequoia
#

Are you maybe missing like when the mirror is at the rightmost possible slot

pine tiger
#

||all possible lines -> how far do i have to check for each line -> check that far||

earnest forge
#

Wait

#

I'm stupid

pine tiger
#

massive W

flat sequoia
#

did ya get it

earnest forge
#

I did range(len()-1) because I thought that range(len()) would include a zero-range at the end

#

🤦

flat sequoia
#

i had this issue too 😧

#

sobbing

covert arrow
#

yup, part 2 was pretty trivial

pine tiger
#

yk for someone at #3 i've never seen advaya here

#

perhaps his sole purpose is to take #2 from me \j

flat sequoia
#

Lmaooo

#

Wait holy shit

#

I fakesolved

earnest forge
#

?

flat sequoia
#

oh wait jk it works

#

I thought I wasn't taking care of

#

the case where the left is longer than the right properly for a sec

pine tiger
#

i feel like the test data would have caught that...

#

no?

earnest forge
#

Yeah, test data splits at 5

flat sequoia
#

Yeah test data would def have caught it

hollow wharf
#

Hello

mystic sky
#

I'm working on day 5 part 2 after finishing part 1 and I honestly have no clue where to start

#

are there overlapping seed numbers?

normal dragon
# rancid creek And if not, it IS perfectly acceptible and expected to google "how to make my co...

We're mostly saying the same thing. I think it's perfectly reasonable to realize "Hey, there's clearly some kind of algorithm or technique I don't know, I'll go look it up."

I just think the statement of "people could discover <insert algorithm or technique>" all on their own is silly, even if you have all the separate components. For some, yes, it will be possible. But for the majority, I don't think so.

normal dragon
mystic sky
#

okay, thanks

broken dock
#

incredibly based

#

so glad i'm not the only person in here who feels that way, and then I see people like captain danger who are actually proponents of leaving certain qualities of the input that make the problem solvable (e.g. would otherwise be extremely difficult to solve or downright impossible) hidden, making that realization part of the puzzle as well

normal dragon
#

Moving my reply here:

I empathize with anyone for whom English is not their native language, because unraveling complex problems in a foreign language is a challenge!

But for native English speakers, I genuinely appreciate how the puzzles are puzzles, where the parameters and assumptions need to be teased out through experimentation or careful reading.

Do I feel dumb when I miss something that was stated? Sure. But that's on me.

woven solar
#

...i don't think it has anything to do with understanding of english at all? Certain info about the input just isn't in the problem statement.

#

(ah, I guess you're probably responding to some complaint that's slightly different from mine)

normal dragon
#

It's a bunch of stuff in #aoc-solution-hints , but we were clobbering the channel from someone looking for help

broken dock
#

also moving my reply here

#

^ this is a classic example because dijkstra's only works when you assume the input can't/won't have negative weight cycles

#

so they are obligated to tell you as much about the input

#

"assume the graph given has no negative weight cycles"

#

otherwise you would need to go with bellman-ford

broken dock
#

they don't have a choice, and if they leave it out, people will dispute the question

#

and send in requests for clarifications

#

and i feel that aoc should be held to the same standard

#

and I'm glad at least one other person ( @woven solar ) feels that way

normal dragon
#

Except that the Advent of Code problems are solvable with the information presented.

broken dock
#

subject to debate

normal dragon
#

It's not, though. It's empirically true.

broken dock
#

it's not

#

but ok

normal dragon
#

You're not making an argument.

broken dock
#

neither are you lol

zenith elbow
# broken dock and i feel that aoc should be held to the same standard

in CP, your code is (generally) going to be submitted elsewhere and your code would be tested on hidden inputs. in AoC there is only one input and you can see exactly what that input looks like. I don't really see a point in emphasizing the constraints of the inputs in AoC.

except for ConfusedReptile's initial argument on day 8 (say, whether there are internal cycles within the input) which would actually effect the logic of the solution, and would disadvantage those who were trying to solve a general solution that covers edge cases versus those who didn't even think of the edge cases

normal dragon
#

Yes, I am, but it's shorthand. Here--

woven solar
normal dragon
#

Statement: Advent of Code problems are solvable with the information presented in the puzzle.

Proof: Every single advent of code problem published to date has been solved.

normal dragon
#

And I think it's a reasonable criticism of Advent of Code if you look at it specifically through the lens of practicing for Competitive Programming.

broken dock
#

in all fairness from my POV this was never about practice

#

aoc is far from an adequate modality for practicing competitive programming (but this makes sense / is not aoc's fault, it wasn't engineered to be as such), so i was never really expecting it to be anything more than something fun to pass time

#

but at the same time picking apart the language used in the problem statements to surmise certain things about the input is just not fun

lime fulcrum
#

aoc is nice because I'm learning new things

normal dragon
#

@broken dock It's perfectly reasonable to be dissatisfied with aspects about Advent of Code. That's one of the joys of humanity--getting to have opinions about things. Making grand declarative statements about the way it should be or how you would change it if you were in charge... all good things to do.

broken dock
#

there have been a number of instances where I felt like I would like to have a word with the problemsetters just this year alone rofl

#

at least four i think

#

wonder if aoc has any official channels to communicate feedback to them

normal dragon
#

The creators are active on reddit.

broken dock
#

do they have certain flairs on their profile

normal dragon
#

They do.

broken dock
#

alright goated, i'll just send them dms

#

although i'm certain there's gotta be a better way of reaching them

normal dragon
#

I would post an open thread for the discussion.

broken dock
#

i don't want to discuss, i want to share my sentiment with them directly and hear from them, directly

#

we're already discussing here and i've gauged at least a few different perspectives on this

normal dragon
broken dock
#

so as far as reaping benefits from a discussion, that's already been done

normal dragon
#

Three final thoughts:

  1. You seem stuck in your mindset and your opinion. You didn't acknowledge my objectively correct statement or offer any kind of rebuttal... it seemed to float past you. That's not so surprising given your age, but it's something you'll want to work on as you grow older.
  2. I would challenge to you would be to adjust your mindset. Don't judge Advent of Code for its deficiencies compared to the standards of Competitive Programming. Judge AoC on its own merits and what its creators are trying to accomplish, and ground your suggestions for improvement there.
  3. I would strongly encourage you to post in a public forum versus directly messaging the people running AoC, especially given that you haven't even been able to find the creator's email.
flat sequoia
#

Personally I think that the way you've been approaching this conversation has been pretty condescending

#

There's been a lot of picking apart people's words rather than trying to understand them

#

Ironically that's sorta related to what a lot of people feel about AoC in general

broken dock
flat sequoia
#

Especially the remark on gian's age I think was wholly unnecessary

broken dock
#

I think my remarks have so far been pretty tame

#

so that comment certainly came out of left field

broken dock
normal dragon
#

The age comment was unnecessary. I was going off your linked website which said you're 18.

broken dock
#

ah, my linkedin must be outdated, then

#

my birthday is on dec. 1st (when aoc starts :) )

normal dragon
#

Happy (recent) birthday!

normal dragon
#

but. fair...?

flat sequoia
#

ChatGPT is less condescending than that

broken dock
#

In all seriousness, thank you for the engagement @normal dragon, I'm aware judging two different things through one lens usually yields one-sided thought patterns like mine, I've only recently started branching out from competitive programming (that was my introduction to computer science, and my segway into the tech industry), so I know I have to keep an open mind with this stuff

normal dragon
lime fulcrum
normal dragon
#

To @broken dock and everyone else: I’m sorry for coming off rude and condescending. I was in a bad mood, and I like arguing, and I didn’t temper my words. My goal was to help, but I lost sight of that while trying to win the argument instead.

dense osprey
#

having to look at your input to be able to solve the problem is terrible

broken dock
#

oldest story in human history

dense osprey
#

who had the correct opinion?

broken dock
#

no one

woven solar
broken dock
#

i have my reasons for feeling the way I do

#

danger has his

#

and that's pretty much it

dense osprey
broken dock
dense osprey
#

if you disagree with me, you are wrong and probably dont know enough about the topic

spice hemlock
#

Ja

dense osprey
#

Ja

hollow wharf
#

please use #1047673173447020564 for sending solutions or at least send it as spoiler ||code|| like this

golden python
#

@low lodge What Down said. Please use the spoiler channel for posting AOC code. I've removed the message.

low lodge
#

Sry i ve posted in aoc solution hints

vagrant bloom
#

How I solved ?

The niceness of a pair (a, b) is the value you will get by subtracting their product from the difference of their squares. For example, the niceness of the pair (7, 4) is 5, because (7²-4²) - (74) is 5.
Find any pair of numbers with niceness 500, where both numbers have 4 digits. If you find a pair (a, b) then write the number (10000
a)+b as the answer.

modern harness
#

I recently discovered the library icecream and have been really enjoying using it for aoc problems. "Never use print() to debug again". When you use ic to print, it prints the variable names too, pretty prints structures, and even includes syntax highlighting.

lime fulcrum
#

what ide are you using?

modern harness
# lime fulcrum what ide are you using?

Neovim. I do sometimes run a debugger, probably not as often as I should, but it depends on what I'm trying to do. If I want to understand where one specific example is going wrong, yeah, a debugger is the best tool, but if I want to see a summary of values to, say, identify which example I should focus on. I've started using breakpoint() more in my code, which is nice since you can throw it in any code without needing to start it specially with the debugger or anything.

lime fulcrum
#

i've been working with vsc and basically only using the debugger

plain sequoia
#

Ong

rancid creek
#

debug when I know where I want to stop and look.
print when I need to see what the value on loop ~500 is.

pine tiger
#

i remember spamming debugger when i was starting out

#

now i barely use it lol

normal dragon
#

Spamming and over using techniques when you first learn them is excellent practice and a great way to learn. Easier to push boundaries and break things and learn to pull back than not knowing where the boundaries are when you need them

ancient surge
#

is advent of code something you can do with pretty much no experience

pine tiger
#

tysm!!

royal gull
# ancient surge is advent of code something you can do with pretty much no experience

Kinda depends what you mean by no experience. If you know the basics of Python, and can do basic problems, there’s a few that you could solve… but there’s also a few that are probably too hard. But the easy ones might take a while, just to manipulate the data into a format you can work with. I’d suggest asking for a suggestion for a simple one to try, and asking in the hints channel.

ancient surge
royal gull
lime fulcrum
#

else day 4

compact pelican
#

I still need to start 🥲

normal dragon
ancient surge
#

Alr

#

Ty

normal dragon
#

Good luck!!

hidden musk
#

4 i think was pretty straightforward

#

i know of a cabal of ~beginner programmers that mostly got it

#

2 too

#

day 7 part 1

ripe meteor
#

Day 8 part1
Day 9 was ok

#

What did xelf do with that chart of difficulties

modern harness
shadow musk
#

hello 🙂

shadow musk
flat sequoia
#

Bruh I just realized

#

I'm going to be on a plane on the 20th, 21st, and 23rd

#

gonna have to buy the in-flight wifi and try my best to do aoc 😭

zenith elbow
#

aoc in the air ✈️ ✨

hexed axle
#

Language Roulette: Day 14
The language is ... Dart

earnest forge
#

GLHF everyone

covert arrow
#

GLHF

shut trellisBOT
magic oxide
#

oh

#

I forgor

#

again

potent pumice
#

man

#

discord has a weird push notification system

#

since this server is big enough and whatnot

#

I viewed that message on mobile and then closed the app

#

then got a notification for it

magic oxide
#

today looks fun

#

have a 40 min train ride soon so hopefully I can finish in that time

flat sequoia
#

I keep getting 69

#

idk why

flat sequoia
#

sobbing

#

I was missing this for 10 minutes

earnest forge
hexed axle
#

|| while 👀 What on earth is part 2? ||

flat sequoia
#

sobbing

earnest forge
hexed axle
earnest forge
#

Uh oh this isn't good

devout turtle
flat sequoia
devout turtle
#

Don’t get me wrong: I’m definitely not asking for the solution to be handed over, as I want to solve them myself, but the last few days, I seem to have a lot more trouble getting the input into a form I can do something with it.

#

I’ve been working with JavaScript so far, as I’m a bit more familiar with that now, but those hints I’m looking for are not language specific.

earnest forge
#

Oh my god I'm dumb

#

I was doing it the wrong way round

#

🤦

flat sequoia
#

what was the issue

hexed axle
# devout turtle Whut? 😮 How do you do that. Can you give me tips on that? I mean, I quickly lo...

Honestly a lot of it is just experience. A lot of puzzles have some common parts, and a lot of real life programming problems have similar common parts. Binary searches are commonly taught for a reason--a lot of time you need to search something. Some folks are really really good at flexible thinking, and noticing how a puzzle needs a common component. But you don't get there until you play with a wide variety of problems and puzzles. It's just going to take a while of figuring out how to view a problem, break it down to smaller, known problems, and tackling those so the big issue is simpler

earnest forge
#

Hey, this is on-topic smh

earnest forge
flat sequoia
#

oh nooo 😭😭😭

earnest forge
#

90% of my time in part 2 was that stupid bug lol

#

(explains why I wasn't ever getting 64 for the sample lmao)

pine tiger
#

I'M GOING TO COMMIT MULTIPLE FELONIES

#

I READ IT WRONG

#

I DIDN'T KNOW

#

A CYCLE WAS ALL 4 DIRECTIONS

#

I THOUGHT A STEP WAS A SINGLE DIRECTION

#

LIKE NORTH ONE, EAST ONE

#

ykw i'll settle for just being on lb at this point

magic oxide
earnest forge
#

For example, ||aoc_helper.Grid|| is quite well-suited for today's puzzle

flat sequoia
#

Personally I don't think it provides that much utility if you've worked with the language a lot

#

parsing is hard sometimes though

magic oxide
#

idk what part 2 is, but from the comments here ||is it about detecting a cycle from shifting north east south west north ...?||

earnest forge
earnest forge
#

(you're doing it ||a large number of times||, so you de-facto need to do that)

woven solar
#

today is pretty much a slight modification of that tetris task from a year or two ago.

flat sequoia
magic oxide
#

yeah I thought of the tetris task as well

flat sequoia
#

Today's part 2 is classic aoc

pine tiger
#

bro i spent way too long on checking modulus off by one etc. etc.

#

perhaps i should make some notes related to that

earnest forge
#

At least you didn't also have my bug

#

:P

flat sequoia
#

Meanwhile I just had stupid bug from being bad

#

😧

pine tiger
#

man as soon as day > 10 my placing just 📉

earnest forge
#

OTOH stupid bugs might occur more like yesterday oh god

flat sequoia
#

I'm def faster on faster days compared to slower days

pine tiger
#

i guess you're just better cuz

earnest forge
#

OOF

#

That's a huge dropoff for p2

pine tiger
#

bro i'm washed as hell it's not even funny

earnest forge
#

Yeah, me too

pine tiger
#

how do i get my brain to tell me funny elves are not the same as a life or death situation

earnest forge
devout turtle
devout turtle
pine tiger
#

uh searching for # in sorted array

#

you can do it by looking in the middle

#

if too low, that means everything on the left is not worth searching

hexed axle
pine tiger
#

if too high -> everything on the right

#

you keep on doing that till you narrow your range down to a single #

devout turtle
earnest forge
#

!pip aoc_helper

marsh currentBOT
pine tiger
#

starwort suggested that library, i just code some stuff myself

earnest forge
#

(but yeah people have offline ones too)

devout turtle
#

Thanks so far. I’ll catch up later.

rancid creek
#

asked chatgpt to help me reduce some voodoo math, and told it the correct answer.

#
start = 114
r = 156
print((start%(r-start)) + (start-1))
# 143 (it said 119)
print(r+(start-1))
# 269 (which it got right at first, and then bizzarly just said it's 143)
jade atlas
#

today was fun!

normal dragon
#

I liked it a lot

edgy briar
normal dragon
edgy briar
#

:vim:

lime fulcrum
#

Today sounds fun

stable ivy
#

I still am stuck on cosmic expansion

simple raven
fleet fox
#

how do u solve puzzles in less than 10 mins

#

daheck

ripe meteor
#

Practice and experience

rancid creek
#

Last nights solution is one of the reasons I enjoy aoc: I found something new. the second param to re.sub can be a function/lambda.

rancid creek
earnest forge
fleet fox
#

Ohh

#

I see

#

ducky_cat thank

rancid creek
# dense osprey i hate regex

It's a pretty simple regex though. '[.O]+'
You can get a lot of utility out of very simple regex without it turning into a giant mess.

normal dragon
#

/s

#

Regex’s are super helpful, though I don’t find them particularly fun to use in Python.

hollow wharf
#

chatgpt finished all assigmnents

#

if u cant u will be replaced by chat

warm berry
hollow wharf
ripe meteor
#

We dont care, move along

hollow wharf
#

rude @ripe meteor

jovial jay
#

i'm way behind. day 8 seems to be a doozy for me. but i think i can do it

normal dragon
jovial jay
#

where's visualization by the way?

minor cave
jovial jay
#

yeah, found that. it seems so hidden, but i understand why

rancid creek
rancid creek
jovial jay
rancid creek
#

That comment probably applies to many of these problems.

simple raven
#

I doubt chatgpt could solve any part to any of these problems just from the input text

jovial jay
#

sometimes, the only trouble is parsing string to easily parsable images. at the end of the day, everything so far can be broken down to numbers

rancid creek
simple raven
#

I haven't used chatgpt much tbh, I'm satisfied with copilot and even that is often more distracting than helpful

rancid creek
#

that can't have been an accident

simple raven
#

lol

jovial jay
#

i wish chatgpt and others just say to people "learn to code" next time

rancid creek
lime fulcrum
#

it does explain code that does work somewhat well. for that it is useful

cosmic tartan
#

I haven't started aoc and should but I don't even know how to make a proper function without getting a syntax error 💀

normal dragon
cosmic tartan
#

thanks

normal dragon
#

Feel free to ping for help if you need any! AoC is great :D

cosmic tartan
#

I've tried aoc with rust but not with python so I don't really have the pythonic wisdom

simple raven
normal dragon
simple raven
rancid creek
rancid creek
rancid creek
cosmic tartan
#

that's very encouraging, thank you :)

sleek cave
#

school made me miss three days 😩

#

good ol' aoc with "great! now for part 2, ||repeat what you did in part 1 one billion times. what is the answer?||"

#

this year's day 8 has taught me to ||not overthink - if you see a cycle, go for it|| :P

#

so i hypothesized ||there will be a cycle||

#

i tested, and ||there was indeed a cycle||

#

now it's just a matter of if it works, it works :P

jovial jay
#

day 8 taught me to read a little harder

#

it takes forever to do Part 1 if you don't start at the appropriate place

sleek cave
#

just like day 8, feels like cheating :P

#

if it works, it works

magic oxide
jovial jay
#

i'm close to wrapping on Day 8 😄

feral hazel
magic oxide
# feral hazel ||ah thank you i was wondering how to prove it but i didn't know where to start|...

||proof would go like
each tilt of north west east south can be modeled as a function f that takes in one board state and outputs another board state
there are a finite number of possible board states (for a loose upper bound take N= 2^(board size))
define g(n) = f(g(n-1)), and g(0)=starting board state. Then, in the sequence g(0),g(1),...,g(N), there are N+1 values, so by the pigeonhole principle there has to be two values s and t with s<t s.t. g(s)=g(t), which means that after s applications of f on the initial board state, or g(s), t-s applications of f will return back to g(s), which is a cycle, so there is always a cycle
||

sleek cave
sleek cave
#

||nothing constrains the sequence g(0),g(1),...,g(N) - they can very well be all different game states, no?||

magic oxide
#

||there are looser upper bounds you can have for this problem, but just any upper bound works||

sleek cave
steady yew
magic oxide
#

||the proof shows that the cycle length is bounded by N as well, since it is at most N-0=N||

sleek cave
magic oxide
sleek cave
#

yep

magic oxide
#

maybe

sleek cave
#

OHHH you meant in general

jovial jay
sleek cave
#

yeah of course in general ||there has to be a cycle bc there's a finite number of game states||

magic oxide
#

||2^board size is a very loose upper bound, it's possible the number of board states can be reduced||

sleek cave
#

actually i'm unsure

magic oxide
#

yeah

sleek cave
#

maybe it can be significantly reduced

magic oxide
#

possible reductions are:
only consider spaces without #
only consider states where all rocks are touching something to the north

#

2nd one is fairly large

#

1e9 is quite small tho so I still don't think that's guaranteed

#

there might be other possible reductions

#

either way ||assuming the existence of a small cycle is a feasibility assumption imo, which I'm personally fine with||

rancid creek
sleek cave
#

yeah same

#

(and maybe spoiler that lolol)

magic oxide
noble skiff
rancid creek
noble skiff
#

My wild guess is that in fact most boards enter a limit pretty quickly

#

It's pretty easy to test actually

magic oxide
#

i feel the same intuitively yeah

normal dragon
#

I’m sure Eric designed it that way

candid berry
#

but I didn't do the same solution. I thought: ||a billion is not such a large number. I'm guessing that it must cycle, but rather than make any attempt to determine the cycle length, I'll just throw a @functools.cache on my function that does a single spin cycle, and see how long it takes to do a million iterations. Turns out: "fast enough". That basically reduces it into a billion-ish dict lookups, which only takes ~2 minutes on my laptop||

magic oxide
#

lmao

candid berry
#

took less time to run than it would have taken me to code something better 😄

jovial jay
#

what kind of prompt is day 9?

oak flax
#

am i allowed to post paste links in #aoc-solution-hints ? im kinda stuck on the second part of todays problem for a few hours already, just cant get it the way i want, and im not sure if there something im missing or everything is just a totally mess

magic oxide
#

we have a pastebin btw

#

!paste

marsh currentBOT
#
Pasting large amounts of code

If your code is too long to fit in a codeblock in Discord, you can paste your code here:
https://paste.pythondiscord.com/

After pasting your code, save it by clicking the Paste! button in the bottom left, or by pressing CTRL + S. After doing that, you will be navigated to the new paste's page. Copy the URL and post it here so others can see it.

normal dragon
#

WHO'S READY FOR DAY 15?!

magic oxide
#

anytime now we're gonna get a really hard problem

covert arrow
#

GLHF

earnest forge
#

GLHF!

earnest forge
modern terrace
#

just in time

jovial jay
#

Now Ill just read and laugh.

shut trellisBOT
loud lintel
jovial jay
#

It's not bad

#

Was expecting something painful

modern terrace
#

YES

flat sequoia
#

37/20

#

why was that so hard to understand wtf

#

i had to read part 2 so many times

earnest forge
#

121/35 let's go

#

I spent time in p1 checking that the input was really one line because the way the puzzle was worded made me think p2 was going to be like 'now there's 2 lines, don't ignore the newline'

#

LB full

modern terrace
#

83/158

#

:D

#

i got in the leaderboard for once

earnest forge
#

do we ping kat?

#

Nice!

#

And for p1 rather than p2 which is a little surprising

modern terrace
#

i had to do a test with the test input which probably caused me to have a much lower rank

earnest forge
#

Wait I just realised, we didn't get a language roulette post today

#

Do you reckon kat is asleep

modern terrace
#

maybe

pine tiger
#

lmao today's reading was ass

covert arrow
#

I threw today because of reading comprehension

pine tiger
covert arrow
earnest forge
#

I gained 90 places lol

modern terrace
#

i had to do an unnecessary from collections import defaultdict

shy trench
#

wait so how do you know which box to put the new lens in

pine tiger
modern terrace
#

and faced a problem with mutability
||(b = [{}]*256)||

covert arrow
mossy basin
#

jeeeez the reading

#

i can't read this much this late at night

shy trench
#

oh wait thanks

#

im dumbass

modern terrace
#

i had to reread the part for = so many times

flat sequoia
#

😭😭😭

mossy basin
#

i did pretty well considering

#

but i don't see well this is not my strong suit

covert arrow
#

I kept thinking the symbols meant something for p1

mossy basin
#

gotta wait for the screen reader

modern terrace
#

||If there is not already a lens in the box with the same label, add the lens to the box immediately behind any lenses already in the box.||
this confused me so much

covert arrow
#

When really you have to ||throw the whole thing into hash||

earnest forge
mossy basin
#

i was just confirming that || it's just normal dict operations||

covert arrow
mossy basin
#

like, you're just describing a ||dict|| right? right?!?

pine tiger
covert arrow
#

But the whole thing was one line

mossy basin
#

i did input.replace("\n", "") cause i got scared

earnest forge
modern terrace
#

was there a newline

earnest forge
#

No

modern terrace
#

oh

mossy basin
#

the problem made me paranoid

feral hazel
modern terrace
#

i literally wrote ||if x != '\n':|| just in case

covert arrow
earnest forge
modern terrace
#

someone else can open the spoilers for day 15 right..?

earnest forge
covert arrow
#

Fair enough

mossy basin
#

we can try to ping a mod to open a channel

#

admins asleep

pine tiger
#

yk salt i'm a bit surprised you aren't mod

mossy basin
#

i've never applied, i don't want the responsibility

pine tiger
#

haha relatable

feral hazel
#

oh i just download it from the input page
so far they all end with a newline
iirc they didn't always in the earlier years

earnest forge
earnest forge
pine tiger
#

Language Roulette is ... Brainfuck

mossy basin
#

let me bug them in the aoc channel for us helpers

earnest forge
modern terrace
#

there's a special aoc channel for helpers?

covert arrow
#

We have a aoc prep channel

#

Language roulette today is Go btw

modern terrace
#

ok

mossy basin
#

oh yeah, i did know the language for today

modern terrace
#

my part 2 took 10 minutes longer than part 1 but still somehow landed me on 158

earnest forge
#

I didn't know the hit board game Go was Turing-complete

mossy basin
#

i got like the same place on both

#

427/410

#

never 420

modern terrace
#

i guess this is how important milliseconds are in the leaderboard

mossy basin
#

wtf

#

insane

earnest forge
#

yeah and I wasted 20 seconds checking the input like a moron

#

(2:16 finish p1)

mossy basin
#

i do a lot of really slow things, i'm not really meant for competitive programming

#

but i try

flat sequoia
#

Holy shit lmao

mossy basin
#

now let me rename all my variables to be lore friendly

earnest forge
normal dragon
#

This was a nice easy puzzle today

mossy basin
#

no one's responded

magic oxide
#

we have an aoc channel for helpers?

mossy basin
#

i know kat said she was watching a movie earlier and couldn't do it, and dawn couldn't

magic oxide
#

yo aboo to the rescue

mossy basin
#

i pinged xith cause it looked like they're online

normal dragon
#

I'm surprised it doesn't just get posted automatically

mossy basin
#

if aboo can do it that'd be awesome

magic oxide
#

it opens after leaderboard fills up

mossy basin
#

i was gonna ping aboo, but then they went offline

earnest forge
tepid cairn
#

Language Roulette: Day 15!
Sorry for the delay ~ today's language is......Go!

modern terrace
#

30 minutes woo

mossy basin
#

thank you aboo!

modern terrace
#

can someone make the solutions post

magic oxide
#

the heck does it mean by ||ignore newlines||

feral hazel
candid berry
#

yeah, I got that wrong at first lemon_sweat

#

I also thought "what kind of red herring is this?", ignored it, and promptly got the wrong result

magic oxide
#

I always remove mine so

earnest forge
normal dragon
#

I always ||strip the newline of my aoc inputs||

candid berry
#

me too, I just missed it this time and couldn't figure out what I'd done wrong for 30 seconds or so

#

I even threw in an explicit loop, and then I was ||confused by the blank line|| that showed up in the output before it finally clicked what dumb fucking thing I'd done

#

🤦

jovial jay
#

If there's one thing that AoC taught me, I can't read

normal dragon
earnest forge
normal dragon
earnest forge
#

(it's literally one command you run at the beginning of the event and it generates the files for each day)

candid berry
#

I copy paste from one day to the next, but yesterday I had a ||.read().splitlines()|| that became a ||.read()|| today since there was only one... 😠

earnest forge
#

((you can also say, e.g. 16-25))