JA1 - Task-2-Array-Sum
Здравейте ,
Написах задачата и резултата ми е 50 / 100 , тоест точно половината ги смята правилно , останалата половина - не. Разгледах кода и не виждам проблем в логиката. Как бих могъл да се ориентирам защо една част не ги смята правилно ? Някакви насоки как да си дебъгна кода в такива ситуации ?
Благодаря ,
Поздрави ,
Любо
Благодаря за изчерпателния отговор Жоро !
Да , изразих се грешно , разбира се , че може в 9 от 10 случаи да работи. Точно там е бъга , в 10 % от случите .
Напълно съм съгласен с подхода , който си описал и смятам да го следвам, но как да дебъгвам след като не знам подадените данни от системата ?
Да , мога да опитвам различни видове входни данни ( което и направих - става въпрос за 3та задача от JA ) , но така и не срещам проблема , който програмата за оценяване открива. Какво ли не измислях. Освен това в условието изрично е казано : "Note that 0 minutes is a valid result, but negative results aren’t possible." .
Не е уточнено обаче , какво да изкараме ако няма нито един автобус стигащ на време ? Мислех и за това и опитах да изкарам 0 , но уви.
Проблемът ,общо взето, е , че трябва да опипвам в тъмното какъв е този 1 от 10 случая , който не работи. Отрицателни стойности в тази задача не са възможни. Опитах да приема и случаите, в които 3 автобуса пристигат след като влака е тръгнал и най-близкия следващ е след 24часа . Но отново програмата не го прие .
След като нямам ясна информация за проблемния случай , един от начините , който ми остава е да налучквам, е и разбира се да мисля за изключителните случаи, но в един момент умствения ми капацитет се изчерпва.... :<
По същество за третата задача :
1. Входните данни са 2 цифри часове и 2 цифри минути
2. Обръщам в минути - 01 = 60 мин . , 02 = 120 мин и тн . и събирам с минутите .
3. Получените резултати са или по-големи от тези на времето на влака ( тоест закъсняват и пристигат след неговото тръгване ) или пристигат преди влака да е тръгнал .
4. За втория случай просто вадя и времето на влака с пристигналите автобуси и намирам най-удобния автобус.
За един от тестовете обаче тази логика не сработва...
Поздрави ,
Любо
"Negative results aren't possible" означава, че няма как да няма автобус, който пристига навреме - защото това би било негативен резултат, "минус толкова" време ще трябва да чака означава, че трябва да е бил там по-рано. С две думи тестовете са такива, че винаги има верен отговор.
Виждам проблемът в решението ти (гледам ти кода сега в judge). Като тестови данни определено си пропуснал един клас от поведения - имай предвид, че освен броя числа и отношението им към времето на влака, трябва да мислиш и за самите стойности на числата. Какви могат да са стойностите, какви разлика предполага в поведението на програмата ти?
Когато изглежда че си предвидил всички общи случаи на поведение на програмата ти и пак имаш грешки, значи може би проблемът се крие в една от "под-програмите" ти - тоест функциите, които ползваш. Изтествал ли си подробно (по този метод с тези стъпки) дали всяка една функция работи добре за всякакви валидни параметри? Ако "като цяло" програмата ти изглежда да работи вярно, значи трябва да провериш дали всеки един компонент от тази програма работи вярно, щом имаш проблем.
Ще ти подскажа едно нещо, но те съветвам да упражниш написаното в предишния абзац, преди да го прочетеш
.
.
.
.
.
.
- една част от програмата ти прави някакви сложни неща за да постигне нещо много просто, което можеш да постигнеш с един кратък ред код съдържащ аритметичен оператор.
Поздрави,
Жоро
Да, открих грешката .
По-лесно y=x%100; отколкото фукнция от 10 реда :)
Благодаря !
Поздрави ,
Любо