78 lines
1.2 KiB
Go
78 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
func contains(s []string, e string) bool {
|
|
for _, a := range s {
|
|
if strings.EqualFold(a, e) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func playValueOf(s string) int {
|
|
fmt.Println("played value: " + s)
|
|
fmt.Println("last char: " + string(s[len(s)-1]))
|
|
|
|
switch string(s[len(s)-1]) {
|
|
case "Z":
|
|
return 3
|
|
case "Y":
|
|
return 2
|
|
case "X":
|
|
return 1
|
|
default:
|
|
panic("Invalid input received at func playValueOf")
|
|
}
|
|
}
|
|
|
|
func dayTwo(input string) int {
|
|
// split input by newlines
|
|
var eachPart = strings.Split(input, "\n")
|
|
|
|
// trim all remaining whitespace
|
|
for j := range eachPart {
|
|
eachPart[j] = strings.TrimSpace(eachPart[j])
|
|
}
|
|
|
|
winningResults := []string{
|
|
"A Y",
|
|
"B Z",
|
|
"C X",
|
|
}
|
|
|
|
drawResult := []string{
|
|
"A X",
|
|
"B Y",
|
|
"C Z",
|
|
}
|
|
|
|
losingResult := []string{
|
|
"A Z",
|
|
"B X",
|
|
"C Y",
|
|
}
|
|
|
|
score := 0
|
|
|
|
for i := 0; i <= 3; i++ {
|
|
switch true {
|
|
case contains(winningResults, eachPart[i]):
|
|
score += playValueOf(eachPart[i]) + 6
|
|
case contains(drawResult, eachPart[i]):
|
|
score += playValueOf(eachPart[i]) + 3
|
|
case contains(losingResult, eachPart[i]):
|
|
score += playValueOf(eachPart[i])
|
|
default:
|
|
score += 0
|
|
}
|
|
}
|
|
|
|
return score
|
|
}
|
|
|