-module(day2). -export([solve/1]). solve(InputData) -> RoundData = binary:split(InputData, <<$\n>>, [trim_all, global]), Rounds = lists:map(fun parse_round/1, RoundData), RoundPoints = lists:map(fun score_round/1, Rounds), {lists:sum(RoundPoints), none}. parse_round(<>) -> {parse_theirs(TheirCode), parse_yours(YourCode)}. score_round(Round = {_Theirs, Yours}) -> round_points(Round) + shape_points(Yours). parse_theirs($A) -> rock; parse_theirs($B) -> paper; parse_theirs($C) -> scissors. parse_yours($X) -> rock; parse_yours($Y) -> paper; parse_yours($Z) -> scissors. round_points({rock, paper}) -> 6; round_points({paper, scissors}) -> 6; round_points({scissors, rock}) -> 6; round_points({Shape, Shape}) -> 3; round_points({_Theirs, _Yours}) -> 0. shape_points(rock) -> 1; shape_points(paper) -> 2; shape_points(scissors) -> 3.