Итак, у меня есть кусок букв и я хочу их перемешать.
Я реализовал этот фрагмент кода:
rand.Shuffle(len(letters), func(i, j int) {
letters[i], letters[j] = letters[j], letters[i]
)}
При запуске программы она застревает в первой строке, говоря: "undefined: rand.Shuffle".
в моей импортной декларации я импортировал "math / rand"
Я также запускаю этот фрагмент кода перед фрагментом с проблемой:
rand.Seed(seed)
Где "seed" указан ранее в коде.
Также я хочу перетасовать слово, но не трогать первую и последнюю букву. Есть ли простое решение для этого. Я написал такой код:
rand.Shuffle(len(letters), func(i, j int) {
if i > 0 && i < (len(letters) - 1) && j > 0 && j < (len(letters) - 1){
letters[i], letters[j] = letters[j], letters[i]
}
})
Полный код:
import (
"math/rand"
"strings"
"regexp"
)
func splitText(text string) []string {
re := regexp.MustCompile("[A-Za-z0-9']+|[':;?().,!\\ ]")
return re.FindAllString(text, -1)
}
func scramble(text string, seed int64) string {
token := splitText(text)
rand.Seed(seed)
if len(token) != 0{
for i := 0; i < len(token); i++{
word := token[i]
if len(word) > 3{
letters := strings.Split(word, "")
rand.Shuffle(len(letters), func(i, j int) {
if i > 0 && i < (len(letters) - 1) && j > 0 && j < (len(letters) - 1){
letters[i], letters[j] = letters[j], letters[i]
}
})
token[i] = strings.Join(letters, "")
}
}
}
returnString := strings.Join(token, "")
return returnString
}