@ 2016-03-14T02:59:38Z <?php
/**
* 文字列の全パターン出力スクリプト
*
* @package Output
* @version 1.0.0
* @since File available since Release 1.0.0
*/
error_reporting(E_ALL);
/**
* ユーザIDをキーにキャッシュから本の配列を取得する。
* 取得出来ない場合はfalseを返す。
*
* @param int $lock ロック桁(12345の内3までが固定の場合、3をロック桁)
* @param arra $arr 出力対象文字列の配列化した値
* @param arra $srt $arrの出力順序
* @return array|bool
*/
function output($lock, $arr, $srt) {
global $length;
// ロック桁以降の全パターン出力
for($k=$lock; $k < $length; $k++) {
// 下桁の2パターンになるまでlock桁を進める
if($lock < $length - 3) {
output($lock+1, $arr, $srt);
} else {
// 表示(lockまでと下二桁)x2
for($j=0; $j <= 1; $j++) {
for($i=0; $i <= $lock; $i++) {
echo $arr[$srt[$i]];
}
echo $arr[$srt[$lock + $j + 1]];
echo $arr[$srt[$lock + 2 - $j]];
echo "\n";
}
}
// ロック桁の値の入れ替え(ロック桁以降でロック桁の次に大きい値)
$w = $srt[$lock];
for($i=1;$i <= $length-$lock; $i++) {
if (($next_addr = array_search($srt[$lock] + $i, array_slice($srt, $lock))) !== false) {
$next_addr += $lock;
break;
}
}
$srt[$lock] = $srt[$next_addr];
$srt[$next_addr] = $w;
}
echo "\n";
}
// main
$str = 'cba'; // 対象文字列
$length = strlen($str);
$arr = str_split($str);
$srt = array_keys($arr);
output(0, $arr, $srt);
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 5.5.0 - 5.5.35 , 5.6.0 - 5.6.28 , 7.0.0 - 7.0.20 , 7.1.0 - 7.1.25 , 7.2.0 - 7.2.33 , 7.3.0 - 7.3.33 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.28 , 8.2.0 - 8.2.18 , 8.3.0 - 8.3.4 , 8.3.6 cba
cab
bca
bac
acb
abc
Output for 8.3.5 Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
cba
cab
bca
bac
acb
abc
preferences:dark mode live preview
195.05 ms | 402 KiB | 228 Q