Loading...
monsterEnergy avatar monsterEnergy 1 Точки

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
}

 

0
Programming Basics 26/10/2017 15:37:22
JivkoJelev avatar JivkoJelev 235 Точки

Ето ти едно мое решение .Не ми се проверяваше ред по ред твойто решение , но като за начало видях в моя код че всичките ми if-ве логическите оператори са && , a не || .Ако пак ти дава 0 от 100 ако искаш виж и моя код.

0
monsterEnergy avatar monsterEnergy 1 Точки

Благодаря за насоката - открих къде е проблема и го fix-нах., но не е в логическите оператори. Всъщност с && се застраховам, че числото се намира в определения интервал при проверката, а няма да влезе в друг If-statement.

0
26/10/2017 22:38:31
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.