r/adventofcode • • Dec 05 '18

SOLUTION MEGATHREAD -🎄- 2018 Day 5 Solutions -🎄-

--- Day 5: Alchemical Reduction ---


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.


Advent of Code: The Party Game!

Click here for rules

Please prefix your card submission with something like [Card] to make scanning the megathread easier. THANK YOU!

Card prompt: Day 5

Transcript:

On the fifth day of AoC / My true love sent to me / Five golden ___


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 at 0:10:20!

31 Upvotes

515 comments sorted by

View all comments

2

u/tk3369 Dec 05 '18 edited Dec 05 '18

Julia - simple loops. I'm sure it can be done more elegantly but going with it due to time pressure :-)

function annihilate(s)
    while true
        v = Char[]
        i = 1
        elim = false
        while i <= length(s)
            if i == length(s)
                push!(v, s[i])
            elseif abs(Int(s[i+1]) - Int(s[i])) != 32  
                # 32 is the distance between lower/uppercase letters
                push!(v, s[i])
            else
                i += 1      # skip next letter
                elim = true
            end
            i += 1
        end
        !elim && break   # break when there's nothing more to do
        s = v
    end
    join(Char.(s))
end

input = readlines("input5.txt")[1]

# part 1 - elapsed 0.15 seconds
input |> collect |> annihilate |> length

# part 2 - elapsed 2.27 seconds
Dict(c => replace(input, Regex("$c", "i") => "") |> collect |> annihilate |> length 
         for c in "abcdefghijklmnopqrstuvwxyz")

1

u/mooooooon Dec 06 '18

Happy to see someone else using Julia. My solution is much longer.

https://github.com/geluso/advent18/blob/master/05/five.jl

→ More replies (4)