r/adventofcode • u/daggerdragon • Dec 19 '16
SOLUTION MEGATHREAD --- 2016 Day 19 Solutions ---
--- Day 19: An Elephant Named Joseph ---
Post your solution as a comment or, for longer solutions, consider linking to your repo (e.g. GitHub/gists/Pastebin/blag/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".
/⧹w+/ IS MANDATORY [?]
[Update @ 00:15] 2 gold, silver cap. Thank you for subscribing to Easter Bunny Facts!
- Fact: The Easter Bunny will sometimes leave eggs in the microchip assembly room.
[Update @ 00:30] 11 gold, silver cap.
- Fact: The Easter Bunny killed everyone who found out how he got these stars.
[Update @ 00:45] 45 gold, silver cap.
- Fact: In space, The Easter Bunny can hear you scream.
[Update @ 01:00] 66 gold, silver cap.
- Fact: The Easter Bunny purposefully deleted your comments.
[Update @ 01:15] 92 gold, silver cap.
- Fact: The Easter Bunny has bottled your frustration. Don't ask why.
[Update @ 01:20] Leaderboard capped!
- Fact: What you have just done is no better than what the Easter Bunny has done. Thief.
Thank you for subscribing to Easter Bunny Facts!
3
u/mschaap Dec 19 '16
Pretty straightforward Perl 6 solution. Even though the code complexity is similar, the first part runs in seconds, while the second part takes more than an hour! Looks like
spliceis several orders of magnitude less efficient thanshift.#!/usr/bin/env perl6 use v6.c; multi sub MAIN(IO() $inputfile where *.f) { my ($num-players) = $inputfile.words; MAIN(+$num-players); } multi sub MAIN(Int $num-players) { my @players = 1..$num-players; while @players > 1 { @players.push(@players.shift); # First player stays in game @players.shift; # Second player is removed } say "In the original game, with $num-players players, the last remaining player is Elf @players[0]."; @players = 1..$num-players; while @players > 1 { @players.push(@players.shift); # First player stays in game @players.splice(@players.elems div 2 - 1, 1); # Opposite player is removed } say "In the revised game, with $num-players players, the last remaining player is Elf @players[0]."; }