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
}