嵌套布尔值的布尔结果

MarkokraM

我正在对访问函数建模,该函数应该基于嵌套数组中的下一个结构返回布尔值,该结构仅包含布尔值:

  1. 根据维度,应该使用OR或AND类型进行比较
  2. 第一级是OR,下一级是AND,下一级是OR,依此类推
  3. 最终结果应返回TRUE或FALSE

例如,我有以下预期结果的数组:

array(TRUE) -> TRUE
array(FALSE) -> FALSE

显然...

array(TRUE, FALSE) -> TRUE

因为TRUE | 错误的

array(TRUE, array(FALSE)) -> TRUE

因为TRUE | (错误的)

array(FALSE, array(FALSE, TRUE)) -> FALSE

由于FALSE | (FALSE && TRUE)

array(FALSE, array(TRUE, array(FALSE, TRUE))) -> TRUE

由于FALSE | (是&&(否|是)。)

我在这里所做的只是在嵌套数组的每个其他级别上更改比较方法。

PHP语言示例将是不错的选择,但是我可以转移到PHP的任何原型都可以作为答案。

乌里·戈伦(Uri Goren)

这是使用array_reduce函数的相互递归的示例

  • do_orOR运算符应用于整个数组
  • do_andAND运算符应用于整个数组
  • 如果数组的元素是数组本身,则函数将相互应用

代码:

function do_or($x,$y)
{
  if (is_array($y))
  {
    if (empty($y))
      {$y=FALSE;}
    else
      {$y=array_reduce($y,"do_and",TRUE);}
  }
  return $x||$y;
}

function do_and($x,$y)
{
  if (is_array($y))
  {
    if (empty($y))
      {$y=TRUE;}
    else
      {$y=array_reduce($y,"do_or",FALSE);}
  }
  return $x && $y;
}

$answer=array_reduce($arr,"do_or",FALSE);

这段代码可以优化,但是我想它可以说明这个想法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章