]> fbox.kageds.com Git - adventofcode.git/blob - 2022/go/day02/day02.go
Day 6
[adventofcode.git] / 2022 / go / day02 / day02.go
1 package day02
2
3 import (
4 "strings"
5 )
6
7 func Part1(input string) int {
8 var sum int = 0
9
10 values := map[string]int{
11 "Rock": 1,
12 "Paper": 2,
13 "Scissors": 3,
14 }
15
16 translateMap := map[string]string{
17 "X": "Rock",
18 "Y": "Paper",
19 "Z": "Scissors",
20 "A": "Rock",
21 "B": "Paper",
22 "C": "Scissors",
23 }
24
25 winOn := map[string]string{
26 "Rock": "Scissors",
27 "Paper": "Rock",
28 "Scissors": "Paper",
29 }
30
31 lines := strings.Split(input, "\n")
32 for _, line := range lines {
33 objects := strings.Split(line, " ")
34 opponent := translateMap[objects[0]]
35 player := translateMap[objects[1]]
36 sum = sum + values[player]
37 if player == opponent {
38 sum = sum + 3
39 } else if winOn[player] == opponent {
40 sum = sum + 6
41 }
42 }
43 return sum
44 }
45
46 func Part2(input string) int {
47 var sum int = 0
48
49 values := map[string]int{
50 "Rock": 1,
51 "Paper": 2,
52 "Scissors": 3,
53 }
54
55 translateMap := map[string]string{
56 "X": "Lose",
57 "Y": "Draw",
58 "Z": "Win",
59 "A": "Rock",
60 "B": "Paper",
61 "C": "Scissors",
62 }
63
64 winOn := map[string]string{
65 "Rock": "Paper",
66 "Paper": "Scissors",
67 "Scissors": "Rock",
68 }
69
70 loseOn := map[string]string{
71 "Rock": "Scissors",
72 "Paper": "Rock",
73 "Scissors": "Paper",
74 }
75
76 lines := strings.Split(input, "\n")
77 for _, line := range lines {
78 objects := strings.Split(line, " ")
79 opponent := translateMap[objects[0]]
80 result := translateMap[objects[1]]
81 if result == "Draw" {
82 sum = sum + 3 + values[opponent]
83 } else if result == "Win" {
84 sum = sum + 6 + values[winOn[opponent]]
85 } else {
86 sum = sum + values[loseOn[opponent]]
87 }
88 }
89 return sum}