Drill

ProblemsGo › games

Score dice pairs

hardgamesHash mapsMathArraysGo

A dice game awards points from matching pairs. For each face value that appears more than once, every pair of matching dice contributes the face value to the total score.

dicePairsScore(dice: list<int>) → int

Go needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

func dicePairsScore(dice []int) int {
	
}

Worked examples

CallResult
dicePairsScore([]int{2, 3, 2, 5, 3})5
dicePairsScore([]int{6, 6, 6})18
dicePairsScore([]int{1, 2, 3})0
dicePairsScore([]int{4, 4, 4, 4})24

Hint

Count frequencies, then for each face with two or more occurrences add value * count * (count - 1) / 2.

Reference solution in Go
func dicePairsScore(dice []int) int {
	freq := map[int]int{}
	for _, d := range dice {
		freq[d]++
	}
	sum := 0
	for v, k := range freq {
		if k >= 2 {
			sum += v * k * (k - 1) / 2
		}
	}
	return sum
}

The same problem in another language

More games problems in Go