Re: плохая система тестирования
От: watchmaker  
Дата: 21.11.20 19:06
Оценка: 15 (1) +1 -1
Здравствуйте, Lazytech, Вы писали:


L>Простенькая задача: Merged String Checker | Codewars

L>[Мое решение на JavaScript]


Немного оффтопик, но ты говоришь, что это решение принялось как верное?

Тогда вот совет: если хочешь научится решать подобные околоалгоритмические задачи, то забей на этот сайт.
И в предыдущих темах со ссылками на codewars я видел откровенно слабые проверки, через которые легко проходят плохие решения. Может это, конечно, ты так специфически эти задачи выбираешь, но закономерность всё равно должна настораживать.

В чём тут проблема в твоём решение: оно имеет экспоненциальное время работы. То есть для входных строк длины N может работать за время Ω(2N) (aka вечность).
  пример таких входных данных
s = ("a" * 2 * N) + "uv"  #  2N символов "a" за которыми следует "uv"
part1 = ("a" * N) + "x" 
part2 = ("a" * N) + "y"

При скромных N == 100 уже будет невозможно дождаться ответа

Но поинт не в том, что решение плохое (в конце концов, это можно и нетрудно исправить), а в том, что проверяющая система этого не обнаружила.
То есть система говорит что ты молодец, а на самом деле она так говорит потому что даже не потрудилась проверит решение
Из-за этого трудно учится: как можно понять куда двигаться, если нет нормальной обратной связи?

Поэтому для обучения лучше взять задачи, тесты и систему проверки, которые хотя бы как-то проверялись (да, при составлении тестов нужно их тоже проверять, что они обеспечивают адекватное покрытие), например с мероприятий icpc и родственных.
Для начала можно выбрать любой сайт из этого списка. Да, везде есть вероятность, что какое-то решение "обманет" систему проверки, которая пропустит какой-то хитрый частный случай, на котором решение на самом деле сбоит. Но прямо такой халтуры на этих системах проверки быть не должно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.