MakeMistake

func makeMistake(option string) string {
	if option == "T" {
		return "F"
	}
	rand.Seed(time.Now().UnixNano())

	if len(option) == 1 {
		oldStr := option
		newStr := ""
		for i := 0; (newStr == "" || newStr == oldStr) && i < 100; i++ {
			newStr = string(rune('A' + rand.Int()%4))
		}
		return newStr
	}

	oldBit := 0
	for _, chr := range strings.Split(option, ",") {
		oldBit |= 1 << (byte(chr[0]) - 'A')
	}

	newBit := 0
	for i := 0; (newBit == 0 || newBit == oldBit) && i < 100; i++ {
		newBit = 0
		for j := 0; j <= rand.Int()%4; j++ {
			newBit |= 1 << (rand.Int() % 4)
		}
	}

	newStr := ""
	for i := 0; newBit != 0; i++ {
		if newBit&1 == 1 {
			if newStr == "" {
				newStr += string(rune('A' + i))
			} else {
				newStr += "," + string(rune('A'+i))
			}
		}
		newBit >>= 1
	}
	return newStr
}
上一篇:AndroidStudio之option menu菜单的使用,android游戏开发


下一篇:vue引入echarts实现3D地球旋转 不设置背景图片