Решения, тестове на изпита на 21 май 2017 - и отваряне на системата за практика
Здравейте колеги,
В shared папката в Dropbox съм ви публикувал целите задачи от днескашния изпит - условия, решения, тестове, скелети:
https://www.dropbox.com/sh/xxvi4n1twv1vqy0/AADKEy7pG7iPXEa6lKMBr8QOa?dl=0
Също така състезанието е отворено за практика ако искате да пререшите задачите, или да се подготвите допълнително за следващия изпит на 28-ми.
В следващите дни ще се постарая да ви публикувам информация какви са ви резултатите за домашни и бонус точки, за да могат тези от вас, които се явиха днес, да преценят дали да се явят на поправка.
Поздрави,
Жоро
rangeFirst ти е първото число в масива, а rangeLength - дължината му.
Със rangeFirst може да смяташ offset-а на масива.
rangeFirst: най-малкото число, което е било добавено в Range-а,
rangeLength: 1 + разстоянието (абсолютната стойност на разликата) между rangeFirst и най-голямото число добавено в Range-а
Но това важи за авторското решение само. Като цяло задачата е направена така, че може тези стойности да ги направите да означават каквото си искате. Предназначени са за това, което съм описал горе, но в програмирането, особено в реализирането на някакви структури данни, вътрешната имплементация на нещо може да бъде направена по много различни начини. Единственото, което е задължително, е даденият код (ConstValueIterator-а и main() функцията) правилно да работи в комбинация с вашата имплементация и да решава задачата описана в условието (от множество въведени масиви от числа, да се изведе този с най-много срещания на определено число, сортиран във възходящ ред).
Case in point, предвид входните данни на тази задача и начина, по който ConstValueIterator-а работи, в едно работещо решение е вариант rangeFirst може винаги да бъде -100, rangeLength винаги да бъде 201 ("Numbers in the input data are from -100 to 100") и така написана структурата най-вероятно пак би работила вярно (и няма да се налага да се справяте със ситуации, в които range-а трябва да се "разшири" - това btw изяде главите на много хора на изпита).
Като цяло идеята на тази задача е да прегледате дадения код и да напишете такава имплементация, която да работи с дадения код. Тоест част от задачата е вие да прецените кои членове как да имплементирате. Разбира се, на изпита времето е ограничено, затова в началото на изпита давам кратко обяснение на идеята на всяка задача, а по времето на целия изпит съм на място за въпроси (това беше така на този изпит и ще бъде така на следващия, на 28 май).
Иначе съм съгласен, че да има обяснения към решенията щеше да е добре. Дори бих казал, че всички Judge Assignments, както и всичко решения на изпити, трябва да си имат по видео за всяка задача, което обяснява решението и начинът, по който се стига до него (т.е. нещо като видеото от лекцията за подготовката за изпит). За съжаление просто не остава време за такива неща. Правенето на един изпит/лекция както трябва си отнема около седмица време, когато го правиш вечерите след работа - и съответно не остава време за допълнителни материали.
Така че за това издание на курса оставям на вас да разучите решенията, като е хубаво да ги обсъждате помежду си във форума - аз гледам да се включвам където има някакви въпроси или нещо неясно.
Поздрави,
Жоро
Супер задачки Жоро. Искаш пак да ни видиш и на поправката :) Обещай че ще бъдат по-гадни задачите !