Document Object Model - Number Convertor - Feedback
Умопомрачен съм от начина, по който се извършва тестването на нашите решения в Judge.
Пиша във връзка с поредна задача от това домашно и този път, най-накрая, успях да се натъкна на нулев тест, който ме светна какво всъщност се случва.
Проверките в Judge са толкова ограничени, толкова hardcode-нати, че ако студента не пусне точно това решение, за което написалия теста си е мислил, автоматично получава 0 точки.
Давам пример с въпросната задача от заглавието.
Първоначално я реших като зад всяка опция от падащия списък за целева бройна система сложих цяло число, което да представлява базата на съответната система (двоична -> 2, шестнадесетична -> 16):
<option value="2">Binary</option>
<option value="16">Hexadecimal</option>
Това прави последващи изчисления базирани на стойността на select menu-то много кратки и лесни. Но не би.
Видите ли, след като това прекрасно решение изгърмя тотално в Judge и погледнах нулевия тест, бях втрещен от това какво се търси.
<option value="binary">Binary</option>
<option value="hexadecimal">Hexadecimal</option>
Вместо да се възползваме от възможността да скрием числа зад етикетите "Binary" и "Hexadecimal", проверяващия очаква от нас да сложим същите символни низове като стойности на опциите. И по незнайна за мен причина те трябва да са не с изцяло главни, не с първа главна и останали малки, а с изцяло малки букви от край до край.
И разбира се, оттам нататък следват едни допълнителни switch-case или if-else проверки, едни parse-вания, за да може да продължим с калкулациите на базата на текст!?!
Къде е алгоритмичното мислене тук?
Защо хората, които се стараят да мислят и пишат практично, да се възползват напълно от всички удобства, които един език за програмиране им предлага, биват наказвани когато дойде време за оценяване на труда им?
Онзи ден колеги изразиха опасения от това дали ще могат да си вземат изпита. Склонен съм да се присъединя към тях. Ако тестовете към изпитните задачи са такива, спукана ни е работата.
Това не е първия курс в SoftUni, при който проверките на домашните в Judge късат нервите на студентите.
И аз за пореден път ще кажа, че щом тестовете не могат да бъдат написани така, че да приемат повече от 1-2 верни решения (а те понякога са дузина), то трябва Input и Output винаги да са видими за студентите.
Не може и не е редно да учим синтаксис в рамките на 4 часа и после в продължение на 40 да гадаем какво точно иска Judge от нас.
Криенето на изискванията не ни прави по-добри програмисти. Няма случай от реалността, в който клиент да дойде при нас и да ни каже "Искам да ми напишеш една програма, но няма да ти кажа кой и как ще я ползва. Ама ти почвай да пишеш...".
И не, условията на задачите за домашно не покриват всички възможни варианти и не могат да ни подготвят за абсурдни случаи като този описан по-горе. Да не говорим, че понякога и в тях има правописни и логически грешки.
И в тази връзка пускането на анкети се обезсмисля, защото тези неща не се променят с години.
Наскоро мой познат се записа в SoftUni. Преминавайки през същите курсове, които аз вече съм карал, се натъкна на същите стари грешки по условия и презентации, които си бяха там и през 2016г. Що за апатия е това? Как може един преподавател или асистент като види грешка в документ по време на презентация, да не посегне да я поправи и да запази промяната за идните курсове?
Разгледаитова решение: https://pastebin.com/JfP4edqK
Гърмя на Virus Installera ако можеш да помогнеш с работещо за да видя къде мажа....
https://pastebin.com/2ceqGr2G?fbclid=IwAR1CMhX74TiEMDKHQTBGZwaFik0lU-qeMt5TiJ7_qo3fnmd82b9YSvAMB48
Ето го моето решение на Number Convertor: https://pastebin.com/q2s1aJQ9
А това е преработения вариант, с който угодих на Judge: https://pastebin.com/5n72SLf1
@vdjalov Съветвам те да не променяш ръчно checked атрибута на радио бутони. Истинската стойност на всяка група от такъв тип не е видима и не е зависима от този атрибут - той не я променя. Аз лично я достъпвам с .value при нужда. Не съм 100% сигурен, но мисля че въпросния атрибут само указва кой радио бутон да е избран при първоначално зареждане на страницата преди всякакви cache-ове. С други думи, махни ги напълно тия onclick() събития от радио бутоните.
Виждам, че зачистваш фоновото изображиние само на първа стъпка/страница (clicks = 0). Не знам дали има тест, който проверява дали на всяка стъпка/страница освен първата има background-image, но за всеки случаи може да изнесеш тази промяна едно ниво по-нагоре - при всяко натискане на бутон [Next]. Работи, защото никога не натискаш бутона, за да заредиш началния екран.
Ето моето предложение за решение на тази задача: https://pastebin.com/wkq0fP3F