Mercurial > lbo > hg > aoc22
changeset 1:a83e493cb7f4
Day 02
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 02 Dec 2022 19:57:31 +0100 |
parents | a6ad52859b77 |
children | 5bf75b17187c |
files | 02/02.jl 02/input.txt |
diffstat | 2 files changed, 2562 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/02/02.jl Fri Dec 02 19:57:31 2022 +0100 @@ -0,0 +1,62 @@ +const input = "02/input.txt" + +struct InputLine + opponent::Char + choice::Char +end + +function parse(fh::IO)::Vector{InputLine} + v = Vector{InputLine}(); + while true + l = readline(fh); + if isempty(l) + break; + end + a, b = split(chomp(l)); + push!(v, InputLine(a[1], b[1])); + end + v +end + +function score(il::InputLine)::Int + shapescore = Int(il.choice - 'W'); + op, me = Int(il.opponent-'A'), Int(il.choice-'X') + @assert abs(me-op) <= 2 + if abs(me-op) == 0 + shapescore + 3 + elseif abs(me-op) == 1 + shapescore + (me > op ? 6 : 0) + else + shapescore + (me < op ? 6 : 0) + end +end + +function score2(il::InputLine)::Int + winscore = 3 * Int(il.choice-'X'); + winshape = (Int(il.opponent-'A')+1)%3; + loseshape = (Int(il.opponent-'A')-1); + if loseshape < 0 + loseshape += 3 + end + if il.choice == 'X' + (loseshape+1) + winscore + elseif il.choice == 'Y' + Int(il.opponent-'A')+1 + winscore + elseif il.choice == 'Z' + (winshape+1) + winscore + else + @assert false + end +end + +function calc(v::Vector{InputLine})::Tuple{Int, Int} + sum(map(score, v)), sum(map(score2, v)) +end + +function run_02(file::String)::Tuple{Int,Int} + open(file; read=true) do fh + p = parse(fh); + calc(p) + end +end +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/02/input.txt Fri Dec 02 19:57:31 2022 +0100 @@ -0,0 +1,2500 @@ +A Z +C X +A Z +A Z +C Y +C Y +A Z +A Y +C Y +A Y +A Z +A Z +A Z +A Y +A Z +A Y +C Y +C X +A Y +C Y +C Y +C X +A Z +C Y +C X +A X +A Y +A Z +A Y +A Y +C X +C X +B Y +C X +C X +A Y +A Z +A Z +A X +A Z +A Z +C Y +A Z +A Z +A Y +C X +C Y +C X +B X +C Z +A Y +A Z +A Z +A Z +A Y +A Y +C X +A Y +A Z +C Y +A Y +A Y +A Z +A Z +C Y +A Z +C Y +A Y +A Z +A Z +C Y +B Z +A Z +A Z +A Z +A Z +C X +C X +A Y +A X +A Y +A Z +A Z +C X +A Z +C X +A Z +C Y +C X +A Z +A Z +A Z +A Z +C X +C Y +A Z +A Z +C Y +A Z +B Z +C X +A Z +A X +C X +A Z +C Z +A Z +C X +A Z +A Y +C X +C Z +A Z +C X +C Y +A Z +B Z +B Y +A X +A X +A X +A Z +A Z +A X +A Z +A X +A Z +A Z +C X +C X +B Z +A Z +A Y +A Z +A Z +A Z +A Z +C X +C X +C X +A Z +A Z +A Z +A Z +A X +A Y +A Y +C X +C X +B Z +C X +A X +A Z +A Z +C X +C Z +A Z +A Z +C Y +A X +A Z +C Y +A X +A Y +A Y +A Y +C Y +A Z +A Z +C X +C X +C X +C X +B Z +C Y +C X +C X +A Y +A Y +A Z +A Z +A X +C X +A Z +B Z +A Z +C X +A Y +A Z +A Z +A Y +A Y +A Z +C X +A Y +C X +C X +A Z +A Y +C X +A Z +A Z +A Y +A Z +A Z +C Y +C Z +A Y +A Z +C X +C X +A Z +A Z +C Y +A Y +A Z +A Y +A Z +C X +A Z +A Z +C X +A Y +A Y +C Y +A Z +C Y +A Z +A Z +C Y +A Y +B Z +C Y +C X +C X +A Z +C Y +A X +C Y +A Z +A Y +A Z +C X +C X +C Y +C Y +A Y +A Z +C X +C X +A Y +A X +A Y +B Z +A Y +C Y +C X +C X +A X +C X +B Z +A X +C Y +C X +C X +A X +A Z +B Z +A Z +A Z +A Y +A X +A Z +C X +A X +C Y +A Z +A Z +A X +A Z +A Z +C X +C X +A Z +A Z +A Z +A X +A Z +A X +B Y +A Z +A Y +C Y +A Z +C X +A Z +C X +A Y +A Z +C X +C Y +A Y +C Y +A Z +C X +A Z +A Z +C X +A Y +A Z +A X +A Z +A Z +A Z +B Y +C X +A X +A Z +A Z +C Y +C Y +C X +C X +C X +A X +A X +A Z +A X +A Y +A Z +A Y +A Z +C Y +C Z +A Y +A Z +A Z +A X +A Z +A Z +C X +C Y +A Y +C X +C X +A Z +C X +C X +C X +A X +A Z +A Z +A Z +A Z +B Y +A Y +A Y +A Z +C X +A Y +A Z +C X +A Z +C Z +A Y +C X +A Z +B Z +A Y +A X +A Z +C X +A Z +A Z +A Z +A Z +A Z +B Z +A Z +C X +A Y +C X +A Z +A Z +A Y +A Z +B Z +C X +A Y +C Y +A Z +A Z +C X +C X +A Y +C X +C Y +B Z +A Y +C X +A Y +C X +A X +A Y +A Z +A Z +A Y +C X +A X +C X +B Y +A Z +A Y +B Y +A Y +C X +A Z +A Z +C X +C Y +A Y +C X +C Y +A Y +A Z +A X +B Z +C X +A Z +A Y +A Z +B Z +A Z +A X +C Y +A X +A Z +A Y +C Y +A Z +C Y +A Z +C X +C X +A Y +C X +C X +A Y +A Z +A Z +A Y +A X +C Y +A Z +A Z +C X +A X +A Z +C Z +A Z +C Y +A Z +C X +A Z +A Z +A X +C X +C X +C Y +B Z +B Y +C Y +A Y +A X +A Z +C X +A Y +A Y +A Z +A Z +C Z +C X +C X +C X +A Z +C X +A Z +A Z +A Y +C Y +C X +C X +C X +A Y +C X +B Z +C X +A Z +C Y +A Y +C Y +A Z +A Z +C X +A X +A Z +A Y +A Z +B X +C Z +A Z +C Z +A X +C X +C X +C X +C X +A Z +A Y +A Z +A Z +A Z +A Z +A Z +C Z +C Y +C Y +C X +C Y +A Z +C X +C X +A Z +A Z +C X +C Y +C Y +A Z +A X +C Y +C Y +C X +A Y +C X +A Z +A Z +A Y +C Y +A Y +C X +C X +A Z +A Z +C Y +A Z +C X +A Y +A Y +A Z +C Y +A Z +C X +A Y +A Z +A Z +A Z +A Z +C Y +A Y +C Y +A Z +A Z +A X +A Y +A Y +A Z +C Y +A Z +A X +A Z +B Z +C X +C X +C Y +A Z +A Z +C X +C Z +A Z +C X +C Y +A Z +B Z +A Z +B Z +A X +A Y +A Z +A Z +A Z +A Z +C Y +A Z +A Z +A Z +B Z +A Z +C X +C X +A Z +C X +A X +A Z +A Y +A Y +A X +A Z +A Z +A Z +A Z +B Z +A Z +C Y +C Y +C X +C X +B Z +C Y +A Z +C Y +A Z +A Y +C Y +A X +A Y +C X +A Y +C X +A Z +A Z +B Z +A Y +C Y +C X +A Z +A Z +C X +A Y +A Z +A Z +A X +A Y +A Y +A Y +A Z +A Y +A Z +C X +A X +A Z +A Z +C Y +A Z +C X +A Z +C Y +A Y +A Z +A Z +A Z +A Z +C Y +A X +A Z +A Z +A Y +A Z +B Z +A X +A Y +C X +C X +A Y +A Z +C Y +A Z +A Y +A Y +A Z +A Y +A Y +A Z +A Z +A Z +C X +A Z +A Y +A Z +A Z +C Y +A Z +C X +A Y +C X +C Y +A Z +C Y +A Z +A Y +C Y +C Y +A Z +C X +C X +C X +A Z +A Z +A Y +C X +A Z +A X +A Z +A Z +C X +A Z +C Y +A Y +A Z +A Y +A Z +A Z +C Y +A Z +C X +A Z +A X +A Z +A Z +C X +A Z +A Z +C Y +C X +A Z +C Y +C X +C X +A Z +A Z +A Z +A X +C X +A Z +A Z +C Y +A Y +C X +A Y +C X +C Y +A Y +A Z +C X +A Z +B Y +A X +B Z +A Y +A X +C Y +A Z +A X +A Z +A Z +C Y +A Z +B Z +C X +C X +B Y +A Z +A Z +A Z +C Y +C X +A Z +A Y +A Y +A Y +C Y +C X +A Z +A X +A X +A X +A Z +A Z +A Z +A Z +C X +C X +A Z +C X +A Y +C X +B Z +A Z +A Z +C X +A Z +C X +C X +C X +A Y +C Y +C X +A Y +C X +C Y +B Z +A Z +C X +A Z +A X +B Z +A Y +B Y +A Z +A Z +A X +A Z +A X +A Z +A Z +C X +C Y +A X +C Y +C X +A Z +A Z +A Z +C Y +A X +A Y +A Z +A Y +C X +B Z +A Z +A Y +C Z +C X +A Z +A Z +A Z +B Z +A X +C X +A Z +A Z +B Z +A Z +A Z +B Z +A Z +C X +A Z +C X +A Z +C X +A Z +C Y +A Z +A X +A Y +A Y +C X +A Y +C X +B Z +A Z +A Z +A Z +A Z +C X +A Z +C X +A Z +A Y +A Z +B Z +A Y +C Z +A Y +C X +A Z +A Z +A Y +B Z +A X +C Y +A Z +A Y +A Z +A Y +A Y +A Z +A Z +A Z +A X +A Z +C Y +A Y +A X +A Y +C X +A Y +C X +A X +C X +A Z +C Y +A Y +A Z +A Z +A X +A Y +C X +C X +A Y +A X +A Z +B Z +A Y +A Z +A X +A Z +B Y +A Y +A Y +A Z +C X +A Z +A Z +A Y +A Z +C Z +A Z +A Z +A Z +A Z +C Y +C Y +A Y +B Z +C Y +A Y +C Y +A Z +A Z +A Z +A Z +C Y +A Z +A Z +C Y +C X +A Y +A Y +A Z +C X +C Z +C X +C X +A Z +A Z +A Y +A Z +A X +C Y +A Z +A Z +C Y +C X +A X +A Z +A Z +A X +C X +C X +C X +A Z +A X +C X +C Y +A X +A Z +C X +A Z +A Z +C X +A Y +A Z +A Z +A Y +A Z +C X +A Z +A Z +C X +A Y +A Z +A Z +C X +A Z +A Y +A Z +C Y +A X +A Z +A Z +C X +A Z +A Y +C Y +B Z +A Z +A Y +C X +A Z +B Z +A Z +C Z +A X +A Z +A Z +C Y +A Z +A Y +C X +C Y +A Z +A Z +A Y +A X +C Y +A Y +C X +C Y +A Z +C Y +A Z +C X +A Z +A Z +A X +A Z +A Z +B X +A X +A Z +C Y +A Z +A X +C X +A Z +A Z +C X +C Y +C Y +A X +A Y +C Y +A Y +A Z +A Z +A Z +A Z +A Y +C X +C X +C Y +C X +A Z +A X +B Z +B Y +C X +C Y +A Y +A Z +A Y +C X +C Z +A Z +A Y +C Y +C X +A Z +A Z +A Y +C X +C Z +C Y +A Z +C X +C Y +A X +A X +A Y +A Z +B Z +A X +A Y +A Y +C X +C Y +A Z +A X +A Z +A X +A Y +A Z +A Z +A Z +C X +A Z +A Z +A Z +C Z +C Y +C Y +A Z +C Y +C Y +C Y +C X +A Z +C X +C X +A Z +A Y +A Z +A Z +A X +A Y +A Y +C X +C X +A Z +A Z +A Z +A Z +A Y +A Z +A Z +A Z +A Z +A X +A X +A Y +A X +C Y +A Y +A Z +C X +A Y +A Y +A Z +A Z +A Z +C X +A Z +C X +C X +C Y +A Y +A Z +A Y +A Z +C X +C X +A Z +A Z +A Z +C X +A X +A Z +A Z +C Y +C Y +A Y +A Y +A Z +A Z +C Y +C X +C Y +A X +C Y +C X +C Y +A Z +A Z +A X +C Y +C Y +A Z +A Y +C X +A X +B Z +A Z +C X +A Y +A X +A Z +A Z +A Z +C Y +C X +A Z +C X +A Z +A Z +A Y +A Z +A Y +A X +A Z +C Z +A Z +A Z +A Z +A X +A Z +A X +C X +A Z +A Z +C Y +A X +A Z +C X +C X +A Y +A Z +A Z +C X +B X +A Z +C Y +A Z +C X +A Y +A Z +C X +A X +A Z +A X +A Z +C X +A Z +A X +A Z +C X +C Y +A Y +A X +A X +A Z +C Y +C Y +A Y +A Y +A Y +A X +A Z +A Z +A Z +C Y +C Y +A Y +B X +B X +A Z +C X +C X +A Z +C Y +C X +A Z +A Z +A Z +A Z +C X +A Z +A Z +C Y +A Y +C Y +A Z +C Y +C Y +A Z +C X +A Z +A X +A Z +C X +C X +A Y +B Z +A Y +C Y +A Z +C Y +A X +C X +A Y +C X +A Z +C Z +C Y +A Z +C X +C Y +A Z +A X +A Z +A Z +A Z +C X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A X +A Y +C Y +B Y +C X +B Z +A Z +A Z +A Y +B Z +A Z +A Z +C X +C Y +C X +A Y +A X +C X +C Y +A Y +C X +C Y +A Z +A Z +A Z +A Y +C X +A Y +C X +B Z +A Z +A Y +A Z +A Z +A Y +C X +A Z +C X +C Y +A Y +A Z +B Z +C X +A Y +C X +A Y +A Z +C X +A X +C X +B Y +C X +A Z +A Y +A Z +A Y +A X +C X +C X +A Y +C X +A Y +A Y +A X +B Y +A Y +C X +C X +A Y +B Z +B X +B Z +A Y +A Z +C Y +A Y +B Y +A Z +C X +A Z +A Z +A Z +A Z +B Z +C X +C Y +A Z +C Y +C Y +A X +C X +A Z +A Z +A Z +C X +C X +C X +A Y +C Z +C Z +A Z +C X +A Y +A Z +A Z +A Z +C X +A Z +A X +A Z +A Z +A Z +A Z +A Y +C Y +C X +A X +A Y +C X +A X +A Z +A Z +C X +A Z +A X +A Z +A Z +A X +A Z +A Z +A X +A Z +A X +B Y +A Y +A Y +C Y +A Z +A Y +C X +A Z +A Y +A X +C Y +B X +C Y +A Z +C X +A Y +A Z +A Y +A X +C Y +A Z +A Z +C Y +C X +A Z +C X +A Y +C X +A Z +A Y +A Z +A Z +A Z +A Y +A Z +C X +C X +A X +C X +C X +A Z +C X +A Z +C Y +C X +A Z +A Z +A Z +C X +A X +C Y +A Z +C Y +A X +A Z +C X +A Z +A Z +A X +A Z +C X +B X +A Z +A Z +A Z +C X +A Y +A Y +A X +C Y +C Y +A Z +A Y +A Z +A Z +C X +A X +A Y +A Z +A Z +A Z +A Z +B Z +C X +C X +C X +A Z +C Z +A X +C X +A Z +C Y +A Z +A Z +A Y +A Y +C X +A Z +A X +A Z +A Z +A Z +A Z +C Y +A Z +A Y +A X +A X +A Z +C X +A X +A X +A Z +A Y +C X +A Z +A Z +A Y +A Z +B Z +C X +C X +C Z +C Y +C X +A Z +C Y +A Z +C Z +A Z +A Y +A Y +A X +A X +A Z +A Y +A Y +A Y +A Y +A Z +C Y +A Z +A Z +C X +A Z +A Z +C Y +A Y +C X +A Y +C X +A Z +B Z +A X +B X +A Y +A X +A Y +B Z +A Y +A Z +C Y +C Y +A Z +A X +A Z +A Z +C Z +A Z +A Y +C X +A Y +C X +A X +A Y +C Y +A Y +A Z +A Z +C X +C X +B Z +A Z +A Z +A X +C X +C Y +A Z +A Z +A X +C X +C Z +A Z +C Y +A Y +B Z +C Y +A Z +C X +A X +A Z +A Z +A Z +A Y +C Y +A Z +C Y +A Z +A Z +A Z +A Z +A Y +C X +A Y +C Y +B Z +A Z +C X +C Y +A Z +C X +A Z +C X +C Z +A Z +C X +C X +A Z +A Z +A Y +A Y +A Y +C X +A Y +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A X +C Y +A Z +A Z +A Z +A Y +A Z +A Z +A Z +A Z +C X +B Z +A Z +A Y +A Y +A X +A Z +A Z +C Z +A Z +C X +A Y +A X +B Z +A Z +A Z +A Z +C Y +C Z +C X +A Z +C Y +C Y +C Y +C X +B Z +A Z +A Z +C Z +A X +A Z +A Z +A Z +C X +A Z +A Z +C Y +C Y +A Z +A Z +C X +A Y +C Y +C Y +A Z +A Z +A X +A Z +A Z +A X +A X +C X +A Z +A X +C X +C X +A Z +A X +A Z +C X +C X +C X +C Y +A Z +A Z +A X +A Z +A Y +A Z +A Z +C Y +A Z +A Z +A Z +A X +A Z +C X +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A X +A Y +A X +C Y +A Z +A Z +C X +A Z +A Z +A Z +A X +A Z +A Z +A Y +C X +A Y +A Z +C X +A X +A Y +A Z +A Z +A X +A Z +A Y +C X +A Y +A Z +A Z +A Z +A Z +C X +C Y +A Z +B Z +C X +A Z +A Z +C Y +C Y +C X +A X +C Y +B Y +A Z +A Z +A Z +C Y +A Z +A X +A Y +A Z +A Z +A Z +C Y +A Z +C Y +C X +A Z +A Z +A Z +A Z +A Z +A X +A Z +A Z +C X +A Z +A Y +C Z +A Z +A Z +A Z +B X +C X +A Z +A Z +A Z +A Z +C X +A Z +A Z +A Y +A X +C X +C Y +A X +A Y +C X +A Z +A Z +C X +C X +A Z +C X +A Z +A Y +C X +A Z +B X +B Y +A X +C Y +A X +A Y +C Y +A Z +A Z +A Z +C X +A Z +A X +A Z +C Y +A Z +A Z +C X +A Z +A Z +A Y +A Z +A X +A Y +A Z +C X +C Y +B X +C Y +A Y +A Z +C X +A Z +C X +C Y +A X +A X +A Z +A Z +C Y +A Y +A Y +A Z +A Z +C X +A X +C X +A X +A Y +C X +A Z +A Z +B Y +A Z +A Z +A Z +A Z +A Z +A X +A Y +A X +A Z +A Z +C X +A Y +A Z +C Y +C X +C X +C X +C X +C Y +A X +A X +C Y +A X +A Y +A Y +B Z +A Z +B Y +C Y +A X +A Y +A Z +A Z +A Z +A X +C X +A Z +A Z +A Z +A Z +A Z +A Y +A Z +B Z +A Z +A Z +A Y +C Y +C Y +C X +A Z +A X +C X +A Y +B Z +C X +A Z +C X +C Y +C Y +A X +A X +C X +A Z +A Z +A Y +A X +A X +A Z +C Y +B X +A Z +A Z +A Z +A Z +A Y +A Y +A Z +C Y +C Y +A X +A Z +A Z +C Y +A Y +A Y +A X +A Y +A X +A X +A X +A Z +A Z +A Y +A Z +C X +A Z +A Y +A Z +A Z +A Y +A Z +A Z +C X +A Z +A Y +A Z +A Z +A Z +A Z +A Z +A Z +A Y +C X +B Z +C Z +A Z +A Y +A X +A X +C Y +C Y +A X +C X +B Z +A Z +C X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Y +A Z +A Z +A Y +A Z +A Y +A Y +A Z +A Z +A Y +A Z +C Y +A Z +A Z +A Z +C X +C X +A Z +C Y +A Z +A Z +C X +A Z +C X +A Y +A Z +C Y +A Z +A Z +C X +C Y +A Z +C X +C X +A X +A Y +C Y +A Y +A Z +C X +A Z +A Z +A X +A Z +C Y +A Z +C X +A Z +C X +A Z +C X +A Y +C Y +A X +A Z +A Z +C Y +A X +A Z +A Y +B Z +A Z +A X +A Z +A Z +A X +C X +A Z +A Z +C Y +A Z +A Y +A Z +C Y +A Z +A Y +A Z +C Z +A Y +A Z +A Y +C Y +A Z +C X +A X +B Z +C X +C X +A Z +A Z +A Y +A X +A Z +A Z +B Z +A Z +C Z +A X +A Z +A Z +A Z +A Z +A X +A X +A Z +A X +A Z +A Z +A Z +A X +C X +C Y +A X +C X +C X +A Z +A X +C Y +B Z +A Z +A Z +C X +B X +A Z +A Z +C X +C X +B Z +C Y +A Z +A Z +C X +A X +A Y +C Y +C Y +B Z +A Y +C X +A Z +A Z +A Y +C X +A Z +A Z +C X +C Y +A Z +C X +C Y +C Y +C X +C Y +A Z +C Y +A Z +C X +A Z +C Y +C Z +A Z +B Z +A Z +C X +C X +B Y +B Z +C Y +C X +C X +A Y +C X +C X +A Z +A Y +A Z +C X +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +C X +A Z +C Y +C X +A Z +B Z +A Z +A Z +A X +C X +A Y +A Z +A Z +A Y +A X +C Y +B X +A Z +A X +C Y +C X +C X +C Y +C Y +A Z +A Z +C Y +A Z +A Y +C Y +A Y +C X +A Z +C X +C Y +C Y +A Z +A Z +A X +A Y +A Z +A X +A Z +A Z +A Z +C Y +A Z +A Z +C X +C Y +A Z +A Z +A Z +C Y +C X +A Z +C X +A Z +A Z +A Z +A X +A Z +A Z +A Y +B Z +A Z +A Z +A Z +C Y +A Z +B Z +A Z +C Z +A Z +A Y +C X +C Y +C X +C X +A Z +A Z +A Y +A Y +A Z +A Y +B Z +C Y +A Y +A Z +C X +A Z +A Z +C Y +A Y +A Z +A Y +C Y +A Z +A Z +A X +B Z +A Z +A X +C X +A Z +C Y +C Y +A Z +B Y +A Y +A Z +A Z +A Z +A Z +C X +C X +A Z +C X +A Y +A Z +A Z +C Y +A Z +A Z +C Y +C X +B Z +A Y +A Y +C X +C X +A Z +A X +B Z +A Z +C Y +A Z +A Y +A Z +A Z +A Y +C Y +C X +A Z +C X +A Z +C Y +A Z +C Y +A Y +A Z +A Y +A Z +C X +A Z +A Z +C X +A Z +B Y +A Z +A Z +C Y +C X +C X +A Z +A Z +C X +B Z +A Y +A Z +A Y +A Z +A Z +A Y +A X +C X +C X +A X +A Z +A Y +A Y +A Z +A Y +A Z +A Z +C Y +A X +A Z +A Z +C X +A Z +A X +B X +C X +A Z +A Y +B Z +C X +C Y +A Z +B Z +C Y +A Z +A Z +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z