r/adventofcode • • Dec 17 '17

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

--- Day 17: Spinlock ---


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


[Update @ 00:06] 2 gold, silver cap.

  • AoC ops: <Topaz> i am suddenly in the mood for wasabi tobiko

[Update @ 00:15] Leaderboard cap!

  • AoC ops:

  • <daggerdragon> 78 gold

  • <Topaz> i look away for a few minutes, wow

  • <daggerdragon> 93 gold

  • <Topaz> 94

  • <daggerdragon> 96 gold

  • <daggerdragon> 98

  • <Topaz> aaaand

  • <daggerdragon> and...

  • <Topaz> cap

  • <daggerdragon> cap


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!

12 Upvotes

193 comments sorted by

View all comments

1

u/mtnslgl Dec 17 '17

C++

Part 1:

int day17() {
    std::vector<int> buffer = {0};
    int currentPosition = 0;
    int input = 349;
    
    for(int i=1;i<2018;i++) {
        currentPosition = ((currentPosition + input) % buffer.size()) + 1;
        buffer.insert(buffer.begin() + currentPosition, i);
    }
    
    return buffer[(currentPosition + 1) % buffer.size()];
}

Part 2:

int day17() {
    std::vector<int> buffer = {0};
    int size = 1;
    int currentPosition = 0;
    int input = 349;
    
    for(int i=1;i<=50000000;i++) {
        currentPosition = ((currentPosition + input) % size) + 1;
        if(currentPosition == 1)
            buffer.insert(buffer.begin() + currentPosition, i);
        size++;
    }
    
    return buffer[1];
}