PHP中的Flames逻辑

PHP中的Flames逻辑,php,logic,Php,Logic,你们都必须意识到火焰的游戏逻辑 .. 我正试图用php实现这一点。 我最终写下了这段代码。。 但是对于每一个字符串,我得到的ans仅为“S”。 不知道出了什么问题。 我被主要的逻辑部分卡住了。 任何人都能看到我出了什么差错 ` $var1 = "pradeep"; // string1 $var2 = "neelam"; // string2 $arr1 = str_split($var1); $arr2 = str_split($var2); /* comp

你们都必须意识到火焰的游戏逻辑 .. 我正试图用php实现这一点。 我最终写下了这段代码。。 但是对于每一个字符串,我得到的ans仅为“S”。 不知道出了什么问题。 我被主要的逻辑部分卡住了。 任何人都能看到我出了什么差错

`
    $var1 = "pradeep"; // string1
    $var2 = "neelam"; // string2

    $arr1 = str_split($var1);
    $arr2 = str_split($var2);

/* compairing each elemnt on string1 with string2 */
     for ($i = 0; $i < strlen($var1); $i++) {
                for ($j = 0; $j < strlen($var2); $j++)
                    if ($arr1[$i] == $arr2[$j]) {
                        unset($arr1[$i]);
                        unset($arr2[$j]);              
                        break;

                    }
            }

           $result = array_merge($arr1, $arr2);
         echo count( $result);
         $flame = "flames"; 

/* Flames Main Logic */ 
     for ($i = strlen($flame); $i > 1; $i--) {
                $diff = $result % strlen($flame);
                if ($diff == 0) {
                    $diff = strlen($flame) - 1;
                } else {
                    $diff--;
                }
                $flame[$diff] = "@";
                list($f1, $f2) = preg_split("/@/", $flame);
                $flame = $f2 . $f1;
            }
            switch ($flame) {
                case f:
                    echo "You are now Friends";
                    break;
                case l:
                    echo "You are now Lovers";
                    break;
                case a:
                    echo "You are now Ancestors";
                    break;
                case m:
                    echo "You are now Married";
                    break;
                case e:
                    echo "You are now Enemy";
                    break;
                case s:
                    echo "You are now Sister";
                    break;
            }


    ?>`
$var1=“pradeep”//string1
$var2=“neelam”//string2
$arr1=str_分割($var1);
$arr2=str_分割($var2);
/*将string1上的每个元素与string2进行比较*/
对于($i=0;$i1;$i--){
$diff=$result%strlen($flame);
如果($diff==0){
$diff=strlen($flame)-1;
}否则{
$diff--;
}
$flame[$diff]=“@”;
列表($f1,$f2)=预拆分(“/@/”,$flame);
$flame=$f2.$f1;
}
开关(火焰){
案例f:
呼应“你们现在是朋友”;
打破
案例一:
呼应“你们现在是情人”;
打破
案例a:
呼应“你们现在是祖先”;
打破
案例m:
回声“你现在结婚了”;
打破
案例e:
呼应“你现在是敌人”;
打破
案例s:
回声“你现在是姐姐”;
打破
}
?>`

这里使用$flame作为数组而不是字符串。

当作为字符串计算时,您可能只得到$flame数组的第一个元素

$flame[$diff] = "@";
我将这样做:

处理时间:70微秒。(0.00007秒)

我喜欢编写没有if-else控制结构的代码。

此代码已测试。

    $flames = str_split(' FLAMES');
    $matrix[6] = array(6,1,2,3,4,5);$matrix[5] = array(5,1,2,3,4);$matrix[4]array(4,1,2,3);$matrix[3] = array(3,1,2);$matrix[2] = array(2,1); 
    $flame = array('Solo','F'=>'Friendship','L'=>'Love','A'=>'Affection','M'=>'Marriage','E'=>'Enemy','S'=>'Sister','');
    $names = str_split($name1 . $name2);
    $values = array_count_values($names);
    foreach ($values as $k => $val){$letters[$val][] = $k;}
    $cnt = count($letters[1]);
    $ndx = 6;
    $loop = 7;
    while($loop-- > 2){
      $ndx = $matrix[$loop][($cnt + $ndx) %$loop ] ;
      $flames[0] = $flames[$ndx--];
      $flames = array_values(array_unique($flames));
    }


    echo "\n<p>Result: " . $flame[$flames[1]] . '</p>';
相当于

array(' ','F','L','A','M','W','S')
矩阵数组
用于更改索引指针(
$ndx
)等于零的值。

$flame
数组用于将最后一个字母转换为结果项。

str\u split
,用字符串生成一个数组,每个数组元素一个字符。

$names = str_split($name1 . $name2);
array\u count\u value
获取每个字母的计数。

$values = array_count_values($names);
这将创建一个多维数组,其中字母计数是关键。
字母[1]包含唯一字母(计数[1])

然后计算唯一字母的数量

 $cnt = count($letters[1]);
这将查找要删除的字母,然后将该字符放入数组元素0中

  $ndx = $matrix[$loop][($cnt + $ndx) %$loop ] ;
  $flames[0] = $flames[$ndx--];
然后,数组_unique将删除与元素[0]匹配的字母

数组_值将键从0重新编号为剩余的字母数

  $flames = array_values(array_unique($flames));
代码错误,请使用

$diff = count($result) % strlen($flame);

哦,天哪!我们真的“所有人都必须意识到游戏逻辑”?我不是!现在怎么办?我需要更改什么?将$flame[$diff]更改为$flame或其他变量名,或者将$fame作为数组引用。比如$flame[0]。我试过了,但没用。你能用你所指的更改粘贴新代码吗?我不知道火焰游戏是什么。但我敢肯定你的问题不止这些。你需要准确地解释游戏是如何工作的。我从头开始重新编写了代码。没有IF或ELSE控制结构。
  $flames = array_values(array_unique($flames));
$diff = $result % strlen($flame);
$diff = count($result) % strlen($flame);