想知道codility.com测试用例是如何定义的?

时间:2014-05-14 06:57:33

标签: php

我试试codility.com。对于测试" PermMissingElem"在https://codility.com/programmers/lessons/1

我写了一个不太好的PHP解决方案,但仍适用于我的所有测试用例。

Codility只让我20%告诉我几个失败的测试用例。这里是其中的一些。

例如:
empty_and_single
空列表和单个元素0.050秒。 RUNTIME ERROR 测试程序意外终止 标准输出: 结果类型无效,预期为int。

missing_first_or_last
第一个或最后一个元素缺少0.050秒。 RUNTIME ERROR 测试程序意外终止 标准输出: 结果类型无效,预期为int。


单个元素0.050秒。 RUNTIME ERROR 测试程序意外终止 标准输出: 结果类型无效,预期为int。

我知道这个测试已经在这里解决了,我才知道他们的测试究竟是什么意思以及为什么我的解决方案失败了。

这是我的解决方案PHP代码:

function solution($A) {
    $noe = count($A);
    if($noe == 0)
        return 1;
    for($i=1;$i<=$noe;$i++)
    {
        if(!in_array($i,$A,TRUE))
            return $i;
    }
}

3 个答案:

答案 0 :(得分:0)

当最后一个元素丢失时,您的解决方案不会返回任何结果。例如,对于数组[1],正确的结果是2,但您的函数不会返回任何内容。 另一个例子:对于数组[1,2],你的解决方案不会返回任何内容,但应返回3.

我认为您在修复此错误方面没有任何问题。虽然你会遇到性能问题。

答案 1 :(得分:0)

这是在C#中,我的程序提供100%正确和100%性能。

Array.Sort(A);
if(A.Length == 0 )
{          
    return 1;                     
}      
else      
{  
    for(int i=0;i<A.Length;i++)   
    {    
        if(A[i] != i+1)    
        {
            return i+1;    
        }

    }
}

return A.Length + 1;

答案 2 :(得分:0)

这是我在PermissingElem中的100%php解决方案,非常简单,只需正确命名你的变量:

function solution($A) {
// write your code in PHP5.5
sort($A);
$index = 0;
foreach($A as $value)
{
    $expected = $index+1;
    if ($expected != $value) return $expected;
    $index++;
}
return $index+1;

}