滚动骰子代码拼图的优化解决方案

时间:2014-04-21 21:18:05

标签: php arrays puzzle

我被要求在面试中提供这个滚动骰子问题的解决方案。当我向他展示我的解决方案时,他说还有另一种方法可以找到解决方案。我只在PHP脚本中寻找答案。

  

问题:

     

两个人正在玩一个滚动2个骰子的游戏。每个人掷n次骰子并记录所有n次尝试的结果(两个骰子的值之和)。因此,在玩家的两次尝试之后,我们有两个对应于两个玩家的n个结果的列表。

     

他们想知道他们是否有相同次数的所有可能结果(1到12)。如果他们得到所有可能的结果相同的次数,那么他们被称为幸运,否则不幸。

     

输入:两个整数数组(L1,L2)对应两个玩家的结果。

     

输出:幸运或不幸,视情况而定

我的回答:

<?php
function rollingdice($input1,$input2)
{
  foreach($input1 as $k=>$a)
  { 
    if(in_array($a,$input2))
    {$p = array_search($a, $input2);
     unset($input2[$p]);
    }
    else
    { return 'Unlucky';}
  }
return 'Lucky';
}
?>

1 个答案:

答案 0 :(得分:1)

<?php
function rollingdice($input1,$input2)
{
  $a = array_count_values($input1);
  $b = array_count_values($input2);

  if(array_diff_assoc($a,$b) || array_diff_assoc($b,$a)) { return 'Unlucky';}

  return 'Lucky';
}