48 lines
789 B
Go
48 lines
789 B
Go
package common
|
|
|
|
type Move int
|
|
|
|
const (
|
|
Rock Move = iota
|
|
Paper
|
|
Scissor
|
|
)
|
|
|
|
type Round struct {
|
|
Opponent Move
|
|
Response Move
|
|
}
|
|
|
|
func (round Round) GetScore() int {
|
|
score := 0
|
|
switch round {
|
|
case Round{Rock, Rock}:
|
|
score += 4
|
|
case Round{Rock, Paper}:
|
|
score += 8
|
|
case Round{Rock, Scissor}:
|
|
score += 3
|
|
case Round{Paper, Rock}:
|
|
score += 1
|
|
case Round{Paper, Paper}:
|
|
score += 5
|
|
case Round{Paper, Scissor}:
|
|
score += 9
|
|
case Round{Scissor, Rock}:
|
|
score += 7
|
|
case Round{Scissor, Paper}:
|
|
score += 2
|
|
case Round{Scissor, Scissor}:
|
|
score += 6
|
|
}
|
|
return score
|
|
}
|
|
|
|
func GetTotalScore(rounds []Round) int {
|
|
score := 0
|
|
for _, round := range rounds {
|
|
score += round.GetScore()
|
|
}
|
|
return score
|
|
}
|