2017-08-03 51 views
2

我想通過回答hackerrank.com中的問題來學習PHP,但是我被困在了這個問題上。相同的結果在HackerRank中看起來不對

<?php 

function plus_minus($array) { 
    $dimension=count($array); 
    $negative =0; 
    $positive = 0; 
    $zeroes = 0; 
    foreach ($array as $element) { 
     $element>0 ? $positive++ : null; 
     $element<0 ? $negative++ : null; 
     $element==0 ? $zeroes++ : null; 
    } 
    echo number_format($positive/$dimension, 6); 
    echo '<br>'; 
    echo number_format($negative/$dimension,6); 
    echo '<br>'; 
    echo number_format($zeroes/$dimension, 6); 
} 


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

plus_minus($arr); 

?> 

下面的截圖: [1]

是問題的錯誤或我沒有我犯錯誤?

+0

你看到的社論 –

+0

什麼是編輯我的問題嗎? – Begum

回答

1

+1爲了花時間使用像hackerrank/topcoder/etc這樣的東西來增加你的技能。

嘗試更換echo '<br>';echo '\n';

我猜問題是HackerRank普遍希望的結果,他們會被顯示印刷標準輸出到終端或東西,而不是呈現爲HTML進行解析和顯示通過瀏覽器。

因此,echo '<br>';很可能導致一些看起來像這樣的測試案例亞軍:

somevalue1<br>somevalue2<br>somevalue3... 

但是當他們的網站上顯示您的瀏覽器中呈現的HTML如下:

​​3210

由於<br>在HTML中被評估爲換行符。因此,即使認爲結果看起來一樣,它不是,它只是瀏覽器渲染與你搞砸!

現在關於你的邏輯總體來說,我不確定三元語句是最好的方法,但你得到的東西應該可以正常工作。

1

echo '\n';

我固定做這個

print_r(number_format($positive/$dimension, 6)); 
print_r("\n"); 
print_r(number_format($negative/$dimension,6)); 
print_r("\n"); 
print_r(number_format($zeroes/$dimension, 6)); 
相關問題