如何在PHP中输出HackerRank的Simple Array Sum挑战?

时间:2016-04-27 05:26:38

标签: php arrays

我只是想熟悉HackerRank环境并练习一些问题。

我正在尝试算法中的第二个挑战>热身: Simple Array Sum

我已经解决了它,并且在我的本地机器上工作正常。

Code:
<?php

function testSum($n,$x)
{
   $sum=0;  
   $x =explode(" ",$x);
    for($i=0;i<$n;$i++)  
        {  
        $sum+=$x[$i];  
    }  
    echo $sum;
}
$handle = fopen ("php://stdin","r");
fscanf($handle,"%d",$n);
$arr_temp = fgets($handle);
$arr = explode(" ",$arr_temp);
array_walk($arr,'intval');

?>

但它每次都给我同样的反应: Response on running code.

请帮助我如何在hackerrank中打印结果以及我在这里缺少什么。感谢

3 个答案:

答案 0 :(得分:1)

我不是第一个,但让我试试(我也在hackerrank.com上工作:)。

<?php
/* simple solution for https://www.hackerrank.com/challenges/simple-array-sum */

/* Read and parse input */
$handle = fopen ('php://stdin', 'r');
fscanf($handle, '%d', $n);
$numbers = explode(' ', fgets($handle));
array_walk($numbers, function (&$value) {
    $value = intval($value);
});

/* result: http://php.net/manual/en/function.array-sum.php */
echo array_sum($numbers);

简单的一步一步解释

  1. Read user input - 查看文档中的示例。
  2. 这里真的不需要
  3. fscanf。在我们的例子中,它从输入读取数字并将值存储在$n变量中。查看文档中的format description
  4. fgets($handle)读取一个字符串。接下来,我们使用explode将字符串拆分为数组。这些都是非常基础且常用的PHP函数,请务必熟悉它们并阅读文档。
  5. 我们遍历数组(array_walk)并将所有元素转换为整数。我们在示例中使用anonymous function。这是一种更先进的技术,可能会在此处跳过。
  6. 最后,我们使用array_sum函数计算并输出总和。

答案 1 :(得分:1)

试试这个

$handle = fopen ("php://stdin","r");
fscanf($handle,"%d",$n);
$arr_temp = fgets($handle);
$arr = explode(" ",$arr_temp);
array_walk($arr,'intval');

 $sum = 0;
for($i = 0; $i< $n; $i++) {
        $sum = $sum + $arr[$i];
    }
fwrite(STDOUT, $sum);

答案 2 :(得分:0)

这样做:

$handle = fopen ("php://stdin","r");
fscanf($handle,"%d",$n);
$arr_temp = fgets($handle);
$arr = explode(" ",$arr_temp);

echo array_sum($arr);