这是一种在线编程测试。该系统允许您编写问题的解决方案,并根据其(平台的内部)单元测试进行检查。
这是问题的摘要:
编写一个接受2个参数(x,y)的函数。
如果x大于y,则返回偶数数组 在x和y之间。
如果x小于y,则返回之间的奇数数组 x和y。
如果x和y相等,或者输入无效/不是整数,则 返回一个空数组。结果数组不包含x和y 在每种情况下。
例如,如果x,y为整数10、2,则该函数将返回 所有2到10之间的偶数,即[4,6,8]。
这是我的代码:
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) ]
该错误似乎很奇怪。没有办法看到针对我的解决方案进行测试的代码,因此确实令人沮丧。请查看我的解决方案,以查看是否存在一些无法解决的极端情况,并可能提供更好的解决方案/算法。
我还想知道该平台的内部测试是否有可能以某种方式出错?谢谢!
答案 0 :(得分:0)
事实证明,针对我的代码进行测试的平台测试实际上是错误的。我编辑了代码以包含x和y,并通过了测试。