Професионална програма
Loading...
+ Нов въпрос
kgyorev avatar kgyorev -10 Точки

Задача 1.Bus Stop от Exercises - джъдж проблем

 Това решение според мен е вярно на 100% а дъджа дава 50 точки,

един час си загубих за да разбера какво очаква джъджа и защо ми дава 50точки а не 100,

според мен ако това се случи на изпит ще е голям проблем защото решението си е работещо.

Верно че решението не е добро но е работещо.

    function getInfo() {
        let baseServiceUrl =
                'https://judgetests.firebaseio.com/businfo' ;
        let request = {
            method: 'GET',
            url: baseServiceUrl + '.json'
        };
        $.ajax(request)
                .then(displayStop)
                .catch(displayError);

        function displayStop(busInfo) {
            $("#buses").empty();
            $("#stopName").empty();
           let stopId = $('#stopId').val();
            let sotopIdInfo =busInfo[stopId];
            let buses = sotopIdInfo['buses']
            let name = sotopIdInfo['name'];
            $('#stopName').text(name)
            for(bus in buses){
                $('#buses').append($('<li>').text(`Bus ${bus} arrives in ${buses[bus]} minutes`))

            }
        }
        function displayError(err) {

            $("#buses").empty();
            $('#stopName').text("Error")
         }
    }

Тагове:
1
JavaScript Applications 21/11/2016 13:48:13
vpl2001 avatar vpl2001 54 Точки

И при мен е така - сравних с други колеги, но ми дава 50/100!

0
Tanyo avatar Tanyo 152 Точки

Здравейте, 

Относно задачата на kgyorev,

Първия тест, ако погледнеш входа, може да видиш, че "сървъра" ти проверява заявката и гледа дали в URL-то ти има "ID" на автобуса, ако няма ти връща грешка. 

 let target = request.url.split('/');
        target = target[target.length - 1].split('.')[0];
        expect(target == '1308');

А ти реално правиш заявка и взимаш всички автобуси без точно ID (Това работи, но си представи реален случай с база която ще ти върне 10 20 хиляди обекта.... става доста тежка заявка... и всичко свършва :D )

Изкарай let stopId = $('#stopId').val()  преди заявката към сървъра и си  добави stopId  в url:
Промени си после  let sotopIdInfo =busInfo[stopId] на let sotopIdInfo = busInfo (Това може да се махне и да си взимаш автобусите и името на спирката директно от параметъра който ти приема функцията)
 

1
viktor.pts avatar viktor.pts SoftUni Team Trainer 331 Точки

Прав си, че решението ти работи, дори и да е малко по-неефективно. Опитваме се да поставяме същите ограничения и на сървисите, които даваме за тестване, но това не винаги е възможно с всички продукти и когато заявката трябва да е по-специфична, се споменава в условието. Иначе колегата Tanyo добре е описал какви са съображенията сървъра да не ти дава да вземеш цялата база с една заявка.

0
kgyorev avatar kgyorev -10 Точки

Аз знам къде е "проблема" че взимам всички елементи вместо да взема за конкретния елемент , знам че решението не е добро но е работещо на 100%.

 

0
viktor.pts avatar viktor.pts SoftUni Team Trainer 331 Точки

Обърнах повече внимание на задачата и тестовия сървър вече рефлектира тестовете в джъджа - тегленето на цялата база вече не работи (както би било в реално API). Благодаря за фийдбека.

0