adventOfCode/internal/day_02/in.go

105 lines
1.6 KiB
Go

package day_02
import (
"fmt"
"strings"
)
type Day struct{}
func (d *Day) Part1(in string) string {
sum := 0
for _, val := range strings.Split(in, "\n") {
playersVal := strings.Split(val, " ")
if len(playersVal) <= 1 {
continue
}
me := d.getValue(playersVal[1])
you := d.getValue(playersVal[0])
// 1 = stein
// 2 = papier
// 3 = schere
// papier - stein
if me == 1 && you == 3 {
me += 6
} else if me == 2 && you == 1 {
me += 6
} else if me == 3 && you == 2 {
me += 6
} else if me == you {
me += 3
}
sum += me
}
return fmt.Sprintf("%d", sum)
}
func (d *Day) Part2(in string) string {
sum := 0
for _, val := range strings.Split(in, "\n") {
playersVal := strings.Split(val, " ")
if len(playersVal) <= 1 {
continue
}
me := d.getValue(playersVal[1])
you := d.getValue(playersVal[0])
// 1 = stein - verlieren
// 2 = papier - unentschieden
// 3 = schere - gewinnen
if me == 3 {
if you == 1 {
me = 2
} else if you == 2 {
me = 3
} else {
me = 1
}
} else if me == 2 {
me = you
} else {
if you == 1 {
me = 3
} else if you == 2 {
me = 1
} else {
me = 2
}
}
// papier - stein
if me == 1 && you == 3 {
me += 6
} else if me == 2 && you == 1 {
me += 6
} else if me == 3 && you == 2 {
me += 6
} else if me == you {
me += 3
}
sum += me
}
return fmt.Sprintf("%d", sum)
}
func (d *Day) getValue(val string) int {
if val == "X" || val == "A" {
return 1
} else if val == "Y" || val == "B" {
return 2
} else {
return 3
}
}