JavaScript Solution - 4 Game Of Intervals Programming Basics 18 March 2017
Привет на всички,
Имам проблем с тази задача от изпита и се състои в следното - опитах да реша задачата на JavaScript и като тествах на NodeJS получавам верните отговори. Няколко пъти изпратих решението в judge, но всеки път гърми с неверен отговор. Aко някой се е опитвал да я реши, нека подскаже къде е грешката.
Ето и кода:
function solve(args) {
var items = args.filter(Boolean).map(Number).slice(1),
result = '';
function calculateResult(params) {
var arr = params, result = 0, elem;
for (var i = 0; i < arr.length; i+=1) {
elem = arr[i];
if (elem < 0 || elem > 50) {
result /= 2
}
if (elem >= 0 && elem <= 9) {
result +=((elem * 20) / 100)
}
if (elem >= 10 && elem <= 19) {
result +=((elem * 30) / 100)
}
if (elem >= 20 && elem <= 29) {
result +=((elem * 40) / 100);
}
if (elem >= 30 && elem <= 39) {
result += 50;
}
if (elem >= 40 && elem <= 50) {
result += 100
}
}
return result.toFixed(2)
}
function checkPercentOfNumbers(params) {
var arr = params, result = '',
toTen = arr.filter((e) => e >= 0 && e <= 9),
toTwenty = arr.filter((e) => e >= 10 && e <= 19),
toThirty = arr.filter((e) => e >= 20 && e <= 29),
toFourty = arr.filter((e) => e >= 30 && e <= 39),
toFifty = arr.filter((e) => e >= 40 && e <= 50),
invalidNumers = arr.filter((e) => e < 0 || e > 50),
percentToTen = (toTen.length / arr.length) * 100 + '%',
percentToTwenty = (toTwenty.length / arr.length) * 100 + '%',
percentToThirty = (toThirty.length / arr.length) * 100 + '%',
percentToFourty = (toFourty.length / arr.length) * 100 + '%',
percentToFifty = (toFifty.length / arr.length) * 100 + '%',
percentInvalidNumbers = (invalidNumers.length / arr.length) * 100 + '%';
result += 'From 0 to 9: ' + percentToTen + '\n' +
'From 10 to 19: ' + percentToTwenty + '\n' +
'From 20 to 29: ' + percentToThirty + '\n' +
'From 30 to 39: ' + percentToFourty + '\n' +
'From 40 to 50: ' + percentToFifty + '\n' +
'Invalid numbers: ' + percentInvalidNumbers;
return result
}
result += calculateResult(items) + '\n' + checkPercentOfNumbers(items)
return result
}
Благодаря за насоката - открих къде е проблема и го fix-нах., но не е в логическите оператори. Всъщност с && се застраховам, че числото се намира в определения интервал при проверката, а няма да влезе в друг If-statement.