Loading...
ktodorov avatar ktodorov 42 Точки

[JavaScript Fundamentals][Exercises] Into to JS Task 06 Figure Area (проблем с Judge?)

Здравейте,

Някой има ли идея защо следното решение на 6-та задача от първата лекция не дава 100 точки в judge?

function calculateFigureArea(w, h, W, H) {
    let area1 = w * h;
    let area2 = W * H;
    
    let subtrH = 0;
    let subtrW = 0;
    
    if (h < H) {
        subtrH = h;
    } else {
        subtrH = H;
    }
    
    if (w < W) {
        subtrW = w;
    } else {
        subtrW = W;
    }
    
    let subtract = subtrH * subtrW;
    
    return (area1 + area2 - subtract);
}

Проблемният тест е Test2 - с input (13, 2, 5, 8).

Когато го тествам в IDE-то, резултатът е верен(56). В judge обаче дава 40 вместо 56.

Поздрави

Тагове:
1
JavaScript Fundamentals 25/05/2017 19:00:14
alisa_terzieva avatar alisa_terzieva 121 Точки
Best Answer

Judge работи със стрингове. Aко подаваш числа в IDE-то, изкарва 56, но ако сложиш стрингове, изкарва 40. При четене на аргументите трябва да ги преобразуваш в числен тип данни - например с Number().

При втората проверка: 

 if (w < W) {
        subtrW = w;
    } else {
        subtrW = W;
    }

Сравняваш "13" с "5", което връща резултат true.

1
24/05/2017 22:51:32
ktodorov avatar ktodorov 42 Точки

Ясно, благодаря! smiley

0
YavorSpassov+deleted! avatar YavorSpassov+deleted! 133 Точки

Нямам представа защо го прави, но ако махнеш if-овете и редактираш следните два реда, тестът минава:
 

let subtrH = Math.min(h,H);
let subtrW = Math.min(w,W);

 

0
ktodorov avatar ktodorov 42 Точки

Да, когато я реша с Math.min:

function calculateFigureArea2(w, h, W, H) {
    let [s1, s2, s3] = [w * h, W * H, Math.min(w, W) * Math.min(h, H)];
    
    return s1 + s2 - s3;
}

няма проблеми.

Но първият начин би трябвало също да е верен indecision

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