我正在尝试通过回答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);
?>
这是一个截图: [
问题是错的还是我犯了错误?
答案 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';