Do/While || For- разлики във времето за компилиране в judge, Lesson 11 - Loops, Problem 10 - Odd/Even Sum
Здравейте,
Споделям челен опит (като от челен удар) при използване на for при решението на тази задача.
Ето и малко подробности:
ЛИНК към условията на зададачите (взимамеза пример задача 10 - Odd Even Sum);
ЛИНК към решението на задачата с използване на цикъл чрез for;
ЛИНК към решението на задачата с използване на цикъл чрез do/while.
Факт е, че кодът в къдравите скоби(между { и } ), който се изпълнява n пъти е абсолютно еднакъв.
Факт е, че реално броят операции и в двата случая е еднакъв.
Най-интересният факт обаче е, че judge дава 100 точки при използване на do/while и цели 12 точки при използване на for. За един и същ код, за едни и същи операции и за еднакви крайни резултати.
"Гърми" заради прекалено много време за компилиране - 0.015 s на тест при do/while и 0.315 s при for или цели 21 пъти по-бавно.
Потърсих отговор при чичко Google за разлики между двата варианта за създаване на цикъл, но отговорите не са категорични и еднозначни.
Единият от тях е, че при еднакъв код, този с по-малко на брой символие по-бърз. Очевадно е невярно твърдение, защото в нашия случай при по-бързия (do/while) имаме 676 символа, а при по-бавния (for) - 604.
Друга теория е, че зависи изцяло от компилатора. Възможно е и да е така, но няма как да бъда сигурен при положение, че във всички останали случаи не съм имялникакви проблеми с for в judge.
Ще помоля за съдействие за да открием моята грешка (ако има такава) или причината това да се случва.
Иначе е много кофти усещането да видиш 12 точки при "правилно решение", което си изградилв главата си и да почнеш да търсиш грешката навсякъде.
Благодаря.