ローマ字の文字列の母音と子音をそれぞれ並び替えた全パターンを求める
例えば「ぱずらあ」(pazuraa)であれば、
puzaaraとか、ruzaapaとか、そういう全パターンを求めます。
// ここに母音と子音で分けて記述する $boin = ['p','z','r','']; $siin = ['a','u','a','a']; $result = []; calc($boin, $siin, ''); foreach($result as $str=>$dummy) echo $str."\n"; echo count($result)."パターンありました。\n"; function calc($a, $b, $str){ // 残りを回す foreach($a as $key => $ch) { $nextStr = $str.$ch; // 次がなければ if (count($b)==0) { // 結果を記録(重複するものは上書き) global $result; $result[$nextStr] = 0; continue; } // 選んだ値を消した配列を作る $next_a = $a; unset($next_a[$key]); // aとbを入れ替えて再起 calc($b, $next_a, $nextStr); } }
出力結果はこんな感じ。
pazuraa pazuara pazarua pazarau …中略… uzarapa urapaza urazapa 96パターンありました。