adventofcode2022/day02/sol.ivy

39 lines
699 B
XML

) get "input.ivy"
test = 3 2 rho "AYBXCZ"
op inc a = 1 + a
op dec a = -1 + a
# returns the outcome for the first player (-1 = lose, 0=draw, +1 = win)
# of a round of rps (1-3 = rock, paper, scissors)
op a rps b = dec (inc a - b) mod 3
op tonum a = ("ABC" iota a) + ("XYZ" iota a)
# converts an outcome into a score
op score outcome =
3 + 3 * outcome
# scores a round of rps for the first player
op a score b =
outcome = a rps b
a + score outcome
op parta x =
x = transp tonum x
+/ x[2] score x[1]
op partb x =
x = tonum transp x
a = x[1]
outcome = -2 + x[2]
b = inc (dec a + outcome) mod 3
+/ b score a
parta test
parta input
partb test
partb input