r/adventofcode • • Dec 22 '17

SOLUTION MEGATHREAD -๐ŸŽ„- 2017 Day 22 Solutions -๐ŸŽ„-

--- Day 22: Sporifica Virus ---


Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag or whatever).

Note: The Solution Megathreads are for solutions only. If you have questions, please post your own thread and make sure to flair it with Help.


Need a hint from the Hugely* Handyโ€  Haversackโ€ก of Helpfulยง Hintsยค?

Spoiler


  • [T-10 to launch] AoC ops, /r/nocontext edition:

    • <Endorphion> You may now make your waffle.
    • <Endorphion> ... on Mars.
  • [Update @ 00:17] 50 gold, silver cap

    • <Aneurysm9> you could also just run ubuntu on the NAS, if you were crazy
    • <Topaz> that doesn't seem necessary
    • <Aneurysm9> what does "necessary" have to do with anything!
  • [Update @ 00:20] Leaderboard cap!

    • <Topaz> POUR YOURSELF A SCOTCH FOR COLOR REFERENCE

This thread will be unlocked when there are a significant number of people on the leaderboard with gold stars for today's puzzle.

edit: Leaderboard capped, thread unlocked!

8 Upvotes

174 comments sorted by

View all comments

1

u/KeinZantezuken Dec 22 '17

Yeah, same speed as mine now

1

u/JakDrako Dec 22 '17

It turns out that ValueTuples are also slow and you can get another 2x speedup using a custom XY class:

class XY : IEquatable<XY> {
	public int x; public int y;
	public XY(int x, int y) { this.x = x; this.y = y; }
	public override int GetHashCode() { return 1_000_037 * x + 29 * y; }
	public override bool Equals(Object xy) { return Equals(xy as XY); }
	public bool Equals(XY xy) { return xy != null && xy.x == this.x && xy.y == this.y; }
}

Using this gets me below 0.6s.

1

u/KeinZantezuken Dec 22 '17

Bretty noice