Лягушка на Codility

Alexey Mezenin

Новичок
Набиваю руку в простых алгоритмических тестах, все идет, но вот с самой простой (как мне казалось) задачкой не прошел.

https://codility.com/programmers/task/frog_jmp/

Когда пишешь задачу и запускаешь их тест - пишет "все верно, тест пройден". Когда нажимаешь submit, пишет, что всего один из четырех тестов проходит, а perfomance тесты - ни один не проходит.

Мои собственные тесты проходят.

Итог - 11 за тест из 100.

У меня два вопроса:

1. Что не так с моим решением?

Код:
function solution($X, $Y, $D)
{
    $counter = 0;

    while ($X <= $Y) {
        $X += $D;

        $counter++;
    }

    return $counter;
}
Мои тесты проходят:

Код:
$this->assertEquals(3, $object->solution(10, 85, 30));
$this->assertEquals(4, $object->solution(5, 130, 40));

2. Почему все perfomance тесты валит, причем в черную? Посмотрел PHP benchmarks, while - практически самый быстрый loop. Или список из 20 языков, на которых можно написать решение - это бутафория и писать нужно исключительно на C++? :)
 

флоппик

promotor fidei
Команда форума
Партнер клуба
2. Почему все perfomance тесты валит, причем в черную? Посмотрел PHP benchmarks, while - практически самый быстрый loop. Или список из 20 языков, на которых можно написать решение - это бутафория и писать нужно исключительно на C++? :)
Там же написано,
  • expected worst-case time complexity is O(1);
 

Alexey Mezenin

Новичок
Спасибо. А почему мое решение у них не канает (если отбросить скорость выполнения)?
 

флоппик

promotor fidei
Команда форума
Партнер клуба

флоппик

promotor fidei
Команда форума
Партнер клуба
Спасибо, прочту.

Еще мне хотелось бы понять что codility хочет со своими corectness tests: https://codility.com/demo/results/trainingZZ3MWU-SHY/

got 3 expected 2
got 4 expected 3
got 1 expected 0
OK

Смотрю в свой код код и не вижу ошибки.
Какой результат вернет твое решение при x = 10, y = 10 ?
Какой результат вернет твое решение при x = 10, y = 20, d = 10 ?

Твое решение неверное.
 

Alexey Mezenin

Новичок
Еще вопрос возник. Как посмотреть как они тестируют? Еще один алгоритм пробую - у меня три теста пролетают успешно, у них только Example Test:




Т.е. хочется посмотреть какие входные данные они используют для этих тестов.
 

Alexey Mezenin

Новичок
Чукча не читатель...
Чукча прочитал, но интерпретировать не смог. Переведи на чукотский.

Они дают конкретное задание, а потом тестят "пустым списком" и тем, где "первый и последний элементы отсутствуют"? Бред какой-то.
 

AnrDaemon

Продвинутый новичок
Не бред, а тест.
ПРОГРАММА НЕ ДОЛЖНА КРАШИТЬСЯ!
 

Breeze

goshogun
Команда форума
Партнер клуба
Серьезно? Это же проверка алгоритма, а не программа. Тогда можно пойти дальше и возмутиться отсутствию валидации и ООП.
Есть функция, есть её вызов и интерпретация результата. Это и есть программа.
ООП пофиг, это способ организации кода. А вот валидация должна быть ^_^
Даже если их тесты проходят, то никто не мешает проверить входные данные по условиям, чисто для себя, а не на отъе*ись.
 

Alexey Mezenin

Новичок
Есть функция, есть её вызов и интерпретация результата. Это и есть программа.
ООП пофиг, это способ организации кода. А вот валидация должна быть ^_^
Даже если их тесты проходят, то никто не мешает проверить входные данные по условиям, чисто для себя, а не на отъе*ись.
Да, вот только все 100/100 решения, которые я видел, не имели никакой валидации. )
 

Breeze

goshogun
Команда форума
Партнер клуба
Да, вот только все 100/100 решения, которые я видел, не имели никакой валидации. )
Хехе, ты видел готовые. Но лично ты можешь быть уверен в том, что в процессе проверки именно твоей функции туда не передадут значение параметра, выходящего за рамки условия? :)
И функция завалится.
 
Сверху