2016-04-27 11 views
2

私はちょうどHackerRank環境に精通し、いくつかの問題を実践しようとしていました。PHPでHackerRankのSimple Array Sumチャレンジを出力するには?

私はアルゴリズム> Warmupsにその第二の挑戦を試みていた。 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

これは完全な解決策です。私はhackerRankサイトで試してみました。早くやれよ。 –

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); 
関連する問題