2017-02-17 4 views
1

現在ゲームに取り組んでいます。私はかなり進歩しています。
問題はシャッフルアルゴリズムです。単語はランダムにシャッフルする必要があります
しかし、は元の単語形式でシャッフルしてはいけません。例:「テーブル」 - >「表」
は、私がこのような何かしたい:「テーブルを」 - >「tlabe」ワードシャッフルアルゴリズム(PHPまたはjavascript)

最初と最後の文字は、その場所に留まるべきであるが、残りはを除いて、ランダムにシャッフルすることができ、そのオリジナルのwordform。

現在、私はこの機能を使用しています私が書きました:

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をシャッフルすることです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

関連する問題