Это своего рода тест онлайн-программирования.Система позволяет вам написать решение проблем и проверить его на соответствие его (внутренним) модульным тестам платформы.
Вот краткое изложение проблемы:
Чтобы написать функциюэто занимает 2 параметра (х, у).
Если x больше y, то возвращает массив четных чисел между x и y.
Если x меньше y, он возвращает массив нечетных чисел между x и y.
Если x и y равны или если ввод недопустим / не является целым числом, возвращает пустой массив. Результирующий массив исключает x и y в каждом случае.
Например, если x, y являются целыми числами 10, 2, функция вернет все четные числа от 2 до 10, т.е. [4, 6, 8].
Вот мойcode:
const numGame = (x, y) => {
let result = [];
if (!Number.isInteger(x) || !Number.isInteger(y)) {
return result;
}
if (x > y) {
for(let i = y + 1; i < x; i++)
if(i%2 == 0) result.push(i);
}
if (x < y) {
for(let i = x + 1; i < y; i++) {
if(i%2 == 1 || i%2 == -1) result.push(i);
}
}
return result;
}
Вот мои собственные тесты, которые легко проходят:
describe('Challenge', function() {
it('should return the right array', function() {
assert.deepEqual(numGame(2,12), [3, 5, 7, 9, 11]);
assert.deepEqual(numGame(12, 2), [4, 6, 8, 10]);
assert.deepEqual(numGame(-6, 12), [-5, -3, -1, 1, 3, 5, 7, 9, 11]);
assert.deepEqual(numGame(12, -4), [-2, 0, 2, 4, 6, 8, 10]);
assert.deepEqual(numGame(0,0), []);
});
});
Мои тесты выше проходят, но когда я отправляю свой код, он не проходит внутренние тесты и возвращает следующее:
should return the right array
expected [ Array(9) ] to deeply equal [ Array(11) ]
Ошибка кажется странной.Нет никакого способа увидеть код, с которым тестируется мое решение, так что это действительно расстраивает.Пожалуйста, просмотрите мое решение, чтобы увидеть, есть ли какие-либо крайние случаи, которые оно не обрабатывает, и, возможно, предоставьте лучшее решение / алгоритм.
Я также хотел бы знать, есть ли шанс, что внутренний тест платформы может бытьчто-то не так?Спасибо!