Получение неопределенного ранда. Перемешать в Голанге - PullRequest
0 голосов
/ 04 сентября 2018

Итак, у меня есть кусок букв и я хочу их перемешать. Я реализовал этот фрагмент кода:

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

}

1 Ответ

0 голосов
/ 05 сентября 2018

Go 1.10 Замечания к выпуску (февраль 2018)

Незначительные изменения в библиотеке

математика / рэнд

Новая функция Shuffle и соответствующий метод Rand.Shuffle перемешивают входную последовательность.


Для функции rand.Shuffle вам нужно как минимум Go 1.10.

Запустите go version, чтобы проверить свою версию.

...