2017-02-17 83 views
1

目前我正在开发一款游戏,并且进展相当顺利。
问题是我的洗牌算法。一个词应该随机混洗
不得以其原始词形式混洗。例如:“表” - >“表”
我想是这样的:“表” - >“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拆分所有字符,然后将随机数使用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