|
|
package main
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
|
/*
|
|
|
你有50枚金币,需要分配给以下几个人:Matthew,Sarah,Augustus,Heidi,Emilie,Peter,Giana,Adriano,Aaron,Elizabeth。
|
|
|
分配规则如下:
|
|
|
a. 名字中每包含1个'e'或'E'分1枚金币
|
|
|
b. 名字中每包含1个'i'或'I'分2枚金币
|
|
|
c. 名字中每包含1个'o'或'O'分3枚金币
|
|
|
d: 名字中每包含1个'u'或'U'分4枚金币
|
|
|
写一个程序,计算每个用户分到多少金币,以及最后剩余多少金币?
|
|
|
程序结构如下,请实现 ‘dispatchCoin’ 函数
|
|
|
*/
|
|
|
var (
|
|
|
coins = 50
|
|
|
users = []string{
|
|
|
"Matthew", "Sarah", "Augustus", "Heidi", "Emilie", "Peter", "Giana", "Adriano", "Aaron", "Elizabeth",
|
|
|
}
|
|
|
distribution = make(map[string]int, len(users))
|
|
|
)
|
|
|
|
|
|
func main() {
|
|
|
left := dispatchCoin()
|
|
|
fmt.Println("剩下:", left)
|
|
|
}
|
|
|
|
|
|
func dispatchCoin() interface{} {
|
|
|
for _, v := range users {
|
|
|
distribution[v] = 0
|
|
|
}
|
|
|
for k := range distribution {
|
|
|
distribution[k] += strings.Count(k, "e")
|
|
|
distribution[k] += strings.Count(k, "E")
|
|
|
distribution[k] += strings.Count(k, "i") * 2
|
|
|
distribution[k] += strings.Count(k, "I") * 2
|
|
|
distribution[k] += strings.Count(k, "o") * 3
|
|
|
distribution[k] += strings.Count(k, "O") * 3
|
|
|
distribution[k] += strings.Count(k, "u") * 4
|
|
|
distribution[k] += strings.Count(k, "U") * 4
|
|
|
//fmt.Println(k, distribution[k])
|
|
|
}
|
|
|
sum := 0
|
|
|
for _, v := range distribution {
|
|
|
sum += v
|
|
|
}
|
|
|
|
|
|
return coins - sum
|
|
|
}
|