我正在尝试创建一个程序来计算字母的所有排序可能性,这就是它的逻辑。您只需输入即可调用该函数,那么就有2 ^ n个(n是输入值)的可能性。如果输入3,则表明存在8种情况,系统通过对输入值进行计数来生成自动字符串,例如:ABC。排序如下:
ABC
ABc
AbC
Abc
aBC
aBc
abC
abc
如您所见,通过每次将可能性除以2,可将字母大写或小写。我无法在for循环中解决此问题,您能帮我吗?这是代码:
function f($hyb, $rand=false) {
$result="";
$characters=array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
if ($rand) {
shuffle($characters);
}
for ($i=1; $i<=pow(2, $hyb); $i++) {
$string=implode(array_slice($characters, 0, $hyb));
if ($i%2==1) {
}
else if ($i%2==0) {
}
}
return $result;
}
echo f(2);
应返回AB Ab aB ab
下面是一个功能,可以满足您的需求。
function f($x) {
$result = array();
$characters = range("A", "Z");
$max = pow(2, $x);
for ($i = 0; $i < $max; $i++) {
$val = "";
$bit = pow(2, $x);
for ($y = 0; $y < $x; $y++) {
$bit >>= 1;
$chr = $characters[$y];
if ($i & $bit) {
$chr = strtolower($chr);
}
$val .= $chr;
}
$result[] = $val;
}
return $result;
}
与您的函数有几个区别:未实现shuffle函数,并且上述函数返回数组而不是字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句