[Exam Problems] Java Basics - 03 September 2014 - {03} Biggest 3 Prime Numbers
Имам забележка към тази задача. В Judge има два некоректни теста - 7-ми и 8-ми.
В условието е казано: You are given n numbers in format (a1) (a2) … (an).
Малко по-надолу, в секцията Input пише: All numbers are in brackets.
Във въпросните два теста има числа, които не са оградени от скоби, като в 8-ми нито едно число не е в скоби. От двете изречения по-горе става ясно, че скобите не са опционални, т.е. казва се, че задължително ще има такива => тестовете са некоректни.
Авторското решение ползва регекс и този проблем се заобикаля. Аз обаче, като човек, който не е много уверен с регекс, ползвах малко по-тъпашки начини да си сплитна входа до числа. Методът ми разчиташе на факта, че между всеки две числа имам скоби, съответно на двата теста имам runtime error.
Според мен редно е ако има хора, (а виждам, че има няколко човека поне с по 80 точки) на които тези два теста им гърмят по точно тази причина, да бъдат компенсирани.
Друго, което се е обсъждало вече и без това - ако на изпита се очаква да знаем регекс, то трябва да се направи и лекция за него. В противен случай трябва доста по-внимателно да се обмислят задачите, които се дават, за да не бъдат твърде зависими от знанията на даден студент по регекс и да може да се решат и с малко идиотски начини, които обаче да са по-разбираеми (например предварително чистене на празни места, сплитване по конкретни символи и т.н.). Не е много приятно да знаеш отлично как да си решиш задачата, но да не може да го направиш, защото не може да си обработиш входа и никой не те е научил как да го правиш. А с търсене в гугъл нещата са 50-50, понякога веднага намираш точния регекс, който ти трябва, понякога намираш само глупости. Т.е. нека се избегнат случаите, в които ако не знаеш много-много регулярните изрази да не може да си вземеш 100 точки заради това.
Метода ти isPrime() връща "true" за 0,1, както и за всички отрицателни числа. Това не е правилно и оттам може би ти гърми някой тест. Осен това в условието е казано, че простите числа са натурални и има линк да се погледне каква е точната дефиниция на натурално число.
На 10ти тест ти гърми понеже каза колегата над мене метода isPrime отчита 0, 1 и всички отрицателни числа.
Отговора на теста е No а решението ти връща резултат 14.
Отново не се получава. Добавих в метод isPrime() проверка числото, ако е по-малко от 2 да връща false и пак 90/100.