Advent-of-Code-2023/day21/notes.org

2.8 KiB

Notes

part 1

so we aren't looking for minimal distance. but all plots which are end to any path of length 'steps left'

so, i have to follow all possible paths to the end? or. length of 6 and all even - because i could be doing <- -> but i could be doing loop around that would increase path len by odd number

let's just make direct recursive thing. create set of all reachable by n,

oh, the part 2.

i suppose this 'infinite' garden could be managed with my 'neighbors' work with 'out of field' fairly easy but what about sizes of the maps? are we releasing maps of previous iterations?

maybe if i directly pass references to prev and current, and manually set 'prev' to target new it will be collected?

and then elements after these steps <em>26501365</em> would fit into memory?

i guess maybe it would help if i had 'fully saturated' field

as my minimal 'skipping' thing

so. store FieldCoord(fieldRow, fieldCol) for fields which were fully saturated at current step.

filter out neighbors, no need to enter fully saturated fields

when counting on odd - around the S, on even - with S

but the neighboring fields would potentially (likely?) be in different phases

but i guess they are necessarily in different phases? or. if width odd - necessarily if width even - then what?

then S is not in the center

my input is 131 chars of width. so neighboring are necessarily of different phase. could compute phase of (0,0) and adjust from that

TODO remake 'ReachableBySteps' into 'CountReachableBySteps' returning int

TODO make it take 'isInitialCountOdd' - to know phase of {0,0} field

current phase can be determined by initial phase and current N

if initial count is odd, and now it's odd number, we made even iterations, so (0,0) is in even state if initial count is even, and now it's even number, we made even iterations, so (0,0) is in even state

DONE make neighbors take set of saturated fields

and not produce points on those fields

DONE for field calculate what would be amount of points in each phase

……….. …..###.#. .###.##..#. ..#.#…#.. ….#.#…. .##..S####. .##..#…#. …….##.. .##.#.####. .##..##.##. ………..

getting 39 and 42

let's check 42 is even?

hmmm

EOEOEOEOEOE OEOEO###O#O E###E##OE#E OE#E#EOE#EO EOEO#O#OEOE O##EOE####O E##OE#EOE#E OEOEOEO##EO E##O#O####E O##EO##E##O EOEOEOEOEOE

yes, sounds good

TODO after getting all new points. get coords of all fields we're working on.

( there already should be no points in saturated fields ) for each such field, check if it is saturated.

  • can be done by comparing the phase with amount of points on saturated

if field saturated - add the coord into set and remove all the points

TODO on the last step, when n is 0

return len(startingAt) + (all saturated fields) * (amount of elems in their phase)