在PHP中的for循环中使用模式

古尼·科巴诺格鲁(Guney Cobanoglu)

我正在尝试创建一个程序来计算字母的所有排序可能性,这就是它的逻辑。您只需输入即可调用该函数,那么就有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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章