2016-04-27 51 views
2

我只是想熟悉HackerRank环境并练习一些问题。如何在PHP中输出HackerRank的Simple Array Sum挑战?

我试图在算法第2次挑战>热身: 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结果和我是什么在这里失踪。由于

+0

你选择的编程语言如PHP的?并勾选'测试自定义输入'。希望它会起作用。 –

+0

@ChoncholMahmud是的,我已经选择了PHP,我在这里粘贴的代码还包括默认的环境代码 –

+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. fscanf这里真的不需要。在我们的例子中,它从输入中读取数字并将该值存储在$n变量中。在文档中检查format description
  3. fgets($handle)读取一个字符串。接下来我们使用explode将字符串分成数组。这些都是非常基本的,并且经常使用PHP函数,确保熟悉它们并阅读文档。
  4. 我们通过数组行走(array_walk)并将所有元素转换为整数。在示例中我们使用anonymous function。这是一种更先进的技术,可能会在这里跳过。
  5. 最后我们使用array_sum函数计算并输出总和。
+0

很好的解释... –

0

只是这样做:

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

echo array_sum($arr); 
+0

你能以完整的解决方案来写吗?所以,我可以更好地了解它的代码顺序。谢谢 –

+0

这是一个完整的解决方案。我在黑客网站上试了一下。去做就对了。 –

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);