2017-02-17 27 views
1

В настоящее время я работаю над игрой, и я прогрессирую довольно хорошо.
Проблема заключается в моем алгоритме shuffle. Слово должно быть перетасовано случайностью
, но НЕ ДОЛЖЕН перетасоваться в исходном текстовом формате. Пример: «стол» -> «стол»
Я хочу что-то вроде этого: «стол» -> «tlabe»Алгоритм Word Shuffle (PHP или javascript)

Первая и последняя буква должна оставаться на своем месте, но остальные могут быть перемешаны случайным образом, за исключением его оригинальная словоформа.

В настоящее время я использую эту функцию я написал:

function shuffle_word($word) 
{ 
    if(strlen($word) < 2) 
     return $word; 
    else 
     return $word{0} . str_shuffle(substr($word, 1, -1)) . $word{strlen($word) - 1}; 
} 

Вы можете проверить свою игру до сих пор и получить лучшее представление о нем:
WordShuffle - The Game

(К сожалению слова являются немецкими в момент, потому что я немецкий и тестирую его с друзьями, чтобы это стало проще)

+0

В чем проблема? – jeroen

+0

Сохраните перетасованное слово в переменной и сравните его с вашим '$ word'. Если они совпадают, перетасовывайте снова. – MrDarkLynx

+0

Слово часто перетасовывается в его исходной словоформе. Я не хочу этого, это не произойдет, иначе нечего угадывать. – iTzMeRafa

ответ

0

Простейший способ сделать это - разбить все символы с помощью str_split, а затем перетасовать obt ained массив, используя функцию shuffle, тогда implode массив, и вы получили свое слово перетасованное!
Пример кода:

function shuffle_word($word) { 
    $chars = str_split($word); 
    shuffle($chars); 
    if(implode("", $chars) == $word) return shuffle_word($word); 
    return implode("", $chars); 
} 

имеют хороший день

0

Спасибо вам, ребята, за быстрые ответы. Я исправил алгоритм, проверив цикл while, если перетасованное слово равно неперетасованному слову.

+0

Это ужасное решение. – Bergi