Java Fundamentals - минали изпити в judge - неясни условия
Здравейте,
Започнах да решавам задачите от предишни изпити, тъй като ми предстои този изпит. Вече пуснах една тема с въпроси относно Dragon accounting от 4- октомври, тък като доста неща не са достатъчно ясно описани в условито. Пропуснах тази задача и реших другите от изпита. Минах на втората тема: "Java Fundamentals Retake - 26 October 2015" и започнах да гледам "TheHeiganDance". Условието отново е много не ясно, докарах го до 70 точки за момента, но без да гледам тестовете нямаше да стане. Та какво ми направи впечатление в условито:
1. On the next several lines – you receive input in format {spell} {row} {col} – {spell} is either Plague or Eruption - едното тук е, че spell изобщо не е Plague или Eruption, а е Cloud или Eruption (да речем, че това се разбира от нулевите тестове). Другото е, че за row и col няма никакви ограничения в какви граници могат да бъдат и като видиш тестовете (което на изпит няма как да се случи) виждаш, че може да излизат и извън границите на матрицата. (хайде да речем, че това може да го предположиш от този constraint : A damaging spell will always affect at least one cell)
2. "If the player’s current position is within the area of damage, the player tries to move." - да ама не, според един от тестовете излиза, че ако текущата магия не го удря, може да си стои там и то без да отнася демидж.
3. "If he cannot move in any direction, because the cell is damaged or there is a wall, the player stays in place and takes the damage." - още в нулеия тест се вижда, че не е така, това е само, ако текущата магия го удари централно, иначе и да има остатък от предишнен облак няма проблем да се премести.
Докато го докарам от 70 до 100 процента със сигурност ще има и още.
На мен ми се струва, че като цяло задачите от този курс са доста не ясно дадени, липсват ограничения, както и уточненията, нулевите тестове като цяло почти нищо не покриват от основните изисквания (все си мисля, че тряба да са малко повече, особенно при положение, че до сега не сме писали на java и това ни е 3-ти изпит като цяло в Софт Уни).
Аз лично срещам сериозни затруднения, не толкова с писането на кода, колкото с разбирането на подробностите около самата задача.
"Имай предвид, че като цяло е грешна практиката, винаги да търсиш проблема в нещо различно от себе си." - "винаги" е малко силна дума, в случая споделям мнение, което смятам, че засяга хората, които минават този курс като цяло. За първата задача, за която условието не беше достатъчно ясно просто отворих тема и си зададох въпросите там. Това обаче, което ми направи впечатление е че неясните условия не са еденичен случай и затова отварям темата - не с цел да се заяждам, а с цел повишаване на качеството на обучение в Софт Уни.
"Да, задачите не са лесни, но все пак това не е Programming Basics изпит. " "Ще ти помогне много, ако винаги се концентрираш върху това как да решиш проблема, вместо да отделяш толкова време да обвиняваш проблема, че не е достатъчно лесен"- Какво значи "лесни" ? - Една задача може да се разбере перфектно като условиве и пак да е трудна. Това, което на мен ми прави впечатление и заради което отварям темата е че "прочита" на условието се оказва по - труден от самата задача. От моя гледна точка решаването на една задача се свежда до 3 етапа:
1. Какъв точно е проблема който трябва да решим
2. Да измислим алгоритъмът за решението.
3. Да изберем подходящи структори от данни и типове в зависимост от ограниченията и да имплементираме алгоритама от точка 2.
Като 2 и 3 понякога може да са взаимно свързани.
Това, което забелязвам аз е, че най - трудното нещо в Java Fundamentals e точка 1. Аз мисля, че не това трябва да е основната идея. Смятам, че в момента се учим да програмираме, т.е. трябва да наблягаме на точки 2 и 3, а не както се налага в задачи като тази например, да четем условието отново и отново, да гледаме между редовете и накрая пак да стигаме до тестовете и това което намерим там като "грешка" в нашето решение да не го намираме изобщо в условито или да го намираме много скрито между редовете.
"Също така, на изпита имаше доста хора, които решиха задачата на 100%, без да гледат тестовете." - Не знам колко човека е имало на изпита, но гледам в момента "Dragon Accounting" - 12 човека, "TheHeiganDance" - 20 човека - което ми се струва доста малко в сравнение с Advanced C# темите примерно.
Да, съгласен съм, че нивото на този изпит е по - високо, на мен самия ми отнема време да измисля алгоритъм и да го имплементирам, което е нормално защото се уча в момента и гледам да наблягам на това, но все пак не ми се струва коретно да се срещат толкова затруднения с разчитането на условията.
Няма как стилът на писане да обхване абсолютно всички. Все един ще разбира по-добре условието от друг. Така е с всичко написано. От романи, до условия на задачи. В крайна сметка, ако по време на изпит в цялата залата се окаже, че 80% от хората не разбират, че като някой кастне магия на определено място и нейният импакт засегне мястото, където се намира играча, той се мести, ако пак е на засегнато място - пак се мести, и ако пак е на засегнато място - се мести и накрая вече няма къде да ходи и си го бият като куче, то ще излезе някой отпред и ще го обясни ...