HackerRank

时间:2017-08-03 03:15:51

标签: php

我正在尝试通过回答hackerrank.com中的问题来学习PHP,但我仍然坚持这一点。

<?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]

问题是错的还是我犯了错误?

2 个答案:

答案 0 :(得分:1)

+1花时间使用像hackerrank / topcoder / etc这样的东西来增加你的技能。

尝试用echo '<br>';

替换echo '\n';

我猜这个问题是HackerRank一般想要结果,因为它们会显示打印到STDOUT到终端或其他东西,而不是呈现为HTML以供浏览器解析和显示。

因此,echo '<br>';可能导致他们的测试用例运行符看起来像这样:

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

但是当它们的网站显示时,您的浏览器呈现HTMl看起来像:

somevalue1
somevalue2
somevalue3
...

由于在HTML中将<br>评估为换行符。因此,即使认为结果看起来一样,但事实并非如此,只是浏览器渲染与你紧密联系!

现在关于你的逻辑,我不确定三元语句是最好的方法,但你得到的应该可以正常工作。

答案 1 :(得分:1)

fmbt-aalc mycountertest.cc.aal | sed -e '/^#line/d' > mycountertest.cc

我通过这样做解决了我的问题

echo '\n';