[Homework] Java Programming Basics - Simple Conditional Statements - Problem{16} - Number...100 to Text
Link към judge:
https://judge.softuni.bg/Contests/152
---
Тъй като Java курса е отскоро и не видях друго споделено Java решение
реших да отворя нова дискусия за да сравня и оптимизирам решението си.
Кодът изглежда работи добре, но не е никак кратък (~100 реда) и съм сигурен, че може
да се измисли по-хитър/по-оптимален начин за реализиране
/но в допустими отстояния от наученото до момента... ;) /.
Също имам два въпроса /Q1-2/ онтносно избраната от мен структура:
Блокове:
[1] Проверка на входни данни:
[1.1] проверка за Integer;
[1.2] проверка за number < 0 || number > 100;
[2] проверка за 0;
[3] цифри 1 до 9;
[4] проверка за 100;
[5] десетици;
[6] числа 10 до 11;
[7] общо принтене с проверки;
---
Код в pastebin:
---
Въпроси:
[Q1] В този контекст (а извън него?) по-оптимално ли е (performance) да проверяваме/обработваме
подобни крайни стойности ([1.2], [2] , [4]) или изключения в началото или намирате
за по-добре да проверим за тях и да ги обработим накрая?
[Q1.1] Има ли правила за оптимизация или някакви насоки, по-които бихме могли да се водим
относно структурирането на проверките?
(да хванем изключенията първо, след което по-често изпълнени проверки да разположим
по-рано в кода или т.н.)
[Q2] бихте ли подобрили нещо в приложения код?
благодаря
сашо
Интересно как думичката "fourty" е сгрешена и в judge дава грешка ако я поправя. И по форумите има такава грешка в дадените примери. Дори Intellij показва че има правописна грешка :)
Грешка при правене на тестовете просто вместо forty е сложено 1 u в повече.
"performance" може би не е най-добрата дума наистина... :))
Въпросът ми произлезе поради един от предишните ми опити, в който
проверявах за десетици последно, блоковете изгледждаха нещо подобно на:
[] цифри 1 до 9;
[] числа 10 до 19;
[] десетици;
на input "99" програмата работеше повече време, с повече памет на някои от тестовете.
Усетих се (малко късно), че повечето input възможности реално са от 20 до 99,
изместих деситиците нагоре за да могат те да излязат от програмата по-рано.
Но пък това ме вкара в дилема за ранната проверката за по-малко вероятните
стойности като 0 или 100, през които всички останали въведени числа биха преминали.
/оттам и [Q1.1]/
(... и оставих 100 доста след проверката за 0 )
Мисля, че изглежда е твърде рано обаче да се замисля човек в "Programming Basics" за тези неща. :)
ПС. Благодаря за бързия отговор и решението с масиви!