# AoC 2024: Day 20

**URL:** <https://ziggit.dev/t/aoc-2024-day-20/7430>\
**Category:** Challenge\
**Tags:** advent-of-code\
**Created:** [December 20, 2024, 5:54am UTC](https://ziggit.dev/t/aoc-2024-day-20/7430 "2024-12-20T05:54:24Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Calder-Ty](https://ziggit.dev/user_avatar/ziggit.dev/calder-ty/32/10237_2.png) [@Calder-Ty](https://ziggit.dev/u/Calder-Ty)\
**Post date:** [December 20, 2024, 5:54am UTC](https://ziggit.dev/t/aoc-2024-day-20/7430/1 "2024-12-20T05:54:24Z")

</div>

Main thread for Day 20 of the 2024 advent of code. Feel free to discuss the challenge and ask questions. If particular discussions become large, we can break them off into new threads.

Some Rules:

1. Please try to keep spoilers within spoiler tags. This is done by typing [spoiler]text to be blurred[\spoiler]. If you have longer sections you can also use the [details=“Title”] tags.
2. Have Fun

[Day 20 Challenge](https://adventofcode.com/2024/day/20)

Templates:

- [GitHub - JacobCrabill/AdventOfCode-2024: My solutions for Advent of Code, 2024](https://github.com/JacobCrabill/AdventOfCode-2024)
- [GitHub - SpexGuy/Zig-AoC-Template: A template for Advent of Code participants using Zig](https://github.com/SpexGuy/Zig-AoC-Template)

Resources:

- [Advent of Code in Zig | Loris Cro's Blog](https://kristoff.it/blog/advent-of-code-zig) :Advice and Tips on How to do AoC with Zig
- [https://zigbin.io](https://zigbin.io) : A website for sharing zig code
- [Documentation - The Zig Programming Language](https://ziglang.org/documentation/master/) : Zig Language Reference
- [Zig Documentation](https://ziglang.org/documentation/master/std/) : Zig Standard Library Docs
- [Docs](https://ziggit.dev/docs) : Community Created Docs and Tutorials
- Private Leaderboard (189 Seats left) code: 1910115-f465b6d3

> **Previous days discussions**
>
> Day 1: [AoC 2024: Day 1](https://ziggit.dev/t/aoc-2024-day-1/7100)  
> Day 2: [AoC 2024: Day 2](https://ziggit.dev/t/aoc-2024-day-2/7119)  
> Day 3: [AoC 2024: Day 3](https://ziggit.dev/t/aoc-2024-day-3/7136)  
> Day 4: [AoC 2024: Day 4](https://ziggit.dev/t/aoc-2024-day-4/7150)  
> Day 5: [AoC 2024: Day 5](https://ziggit.dev/t/aoc-2024-day-5/7167)  
> Day 6: [AoC 2024: Day 6](https://ziggit.dev/t/aoc-2024-day-6/7183)  
> Day 7: [AoC 2024: Day 7](https://ziggit.dev/t/aoc-2024-day-7/7196)  
> Day 8: [AoC 2024: Day 8](https://ziggit.dev/t/aoc-2024-day-8/7207)  
> Day 9: [AoC 2024: Day 9](https://ziggit.dev/t/aoc-2024-day-9/7226)  
> Day 10: [AoC 2024: Day 10](https://ziggit.dev/t/aoc-2024-day-10/7244)  
> Day 11: [AoC 2024: Day 11](https://ziggit.dev/t/aoc-2024-day-11/7264)  
> Day 12: [AoC 2024: Day 12](https://ziggit.dev/t/aoc-2024-day-12/7288)  
> Day 13: [AoC 2024: Day 13](https://ziggit.dev/t/aoc-2024-day-13/7301)  
> Day 14: [AoC 2023: Day 14](https://ziggit.dev/t/aoc-2023-day-14/7323)  
> Day 15: [AoC 2024: Day 15](https://ziggit.dev/t/aoc-2024-day-15/7342)  
> Day 16: [AoC 2024: Day 16](https://ziggit.dev/t/aoc-2024-day-16/7364)  
> Day 17: [AoC 2024: Day 17](https://ziggit.dev/t/aoc-2024-day-17/7394)  
> Day 18: [AoC 2024: Day 18](https://ziggit.dev/t/aoc-2024-day-18/7403)  
> Day 19: [AoC 2024: Day 19](https://ziggit.dev/t/aoc-2024-day-19/7418)

---

<div class="post-metadata">

**Author:** ![erikwastaken](https://ziggit.dev/letter_avatar_proxy/v4/letter/e/8baadc/32.png) [@erikwastaken](https://ziggit.dev/u/erikwastaken)\
**Post date:** [December 20, 2024, 12:09pm UTC](https://ziggit.dev/t/aoc-2024-day-20/7430/2 "2024-12-20T12:09:36Z")

</div>

Cheating race conditions just sounds like a nightmare, to be completely honest. The puzzle was nice though! Key insight for part 2 was to use Taxicab Geometry to identify potential shortcut endpoints.

[https://zigbin.io/5aeacd](https://zigbin.io/5aeacd)

---

<div class="post-metadata">

**Author:** ![p88h](https://ziggit.dev/user_avatar/ziggit.dev/p88h/32/3974_2.png) [@p88h](https://ziggit.dev/u/p88h)\
**Post date:** [December 20, 2024, 5:15pm UTC](https://ziggit.dev/t/aoc-2024-day-20/7430/3 "2024-12-20T17:15:11Z")

</div>

Had some fun optimizing today. Not sure how to tell Zig that a pointer I have (\*self, basically) does not actually change and the fields I am accessing do not need constant fetching from memory. Loading fields into local consts seems to work, but is this the only way?

Anyways.

Source: [aoc2024/src/day20.zig at main · p88h/aoc2024 · GitHub](https://github.com/p88h/aoc2024/blob/main/src/day20.zig)  
Video: [https://www.youtube.com/watch?v=P7IfyW58aOQ](https://www.youtube.com/watch?v=P7IfyW58aOQ)

Benchmark:

```zig
        parse part1 part2 total
day 20: 19.1 µs 0.1 ms 0.8 ms 1.0 ms (+-6%) iter=1000

```

---

<div class="post-metadata">

**Author:** ![ProfBof](https://ziggit.dev/letter_avatar_proxy/v4/letter/p/a88e4f/32.png) [@ProfBof](https://ziggit.dev/u/ProfBof)\
**Post date:** [December 22, 2024, 11:19pm UTC](https://ziggit.dev/t/aoc-2024-day-20/7430/4 "2024-12-22T23:19:19Z")

</div>

18ms: a bit slow because I did not think about only checking the path points at the correct manhattan distance. My solution is clearly n2. Next time I’ll think more.

[https://zigbin.io/0862d0](https://zigbin.io/0862d0)
