[Homework] C# Basics - Advanced Topics - mistakes
Здравейте колеги,
Направи ми впечатление, че в някои от условията на задачите има допуснати грешки - най-вече в дадените примери към задачите. Дотук забелязах няколко и ще ги споделя; моля допълвайте списъка ако има и други, за да не се чудят колегите къде грешат, дали не са разбрали както трябва и т.н. Добре ще е да се мъчим върху самите задачи, а не върху сгрешените примери. Хубаво е и да се отстранят тези неточности за следващите курсове.
Задача 1 - това не е толкова грешка, но е разминаване с предишната задача с редица на Фибоначи (от домашно 4). Полезно е да се отбележи за тези (като мен), които са решили да си копират алгоритъма от предишното решение, при което няма да съвпадат отговорите, които дава програмата, с дадените примери. Разликите са:
- броенето на членовете (т.е. индексирането) започва от 0, не от 1.
- първият член е 1, а не 0.
Задача 8 - non-decreasing ще рече, че всяко следващо число в редицата е по-голямо или равно на предходното. Съответно, последните три примера са подвеждащи. Трябва резултатите да са следните:
Вход | Изход |
1 | 1 |
7 3 5 8 -1 6 7 | 3 5 6 7 |
1 1 1 2 2 2 | 1 1 1 2 2 2 |
1 1 1 3 3 3 2 2 2 2 | 1 1 1 2 2 2 2 |
11 12 13 3 14 4 15 5 6 7 8 7 16 9 8 | 3 4 5 6 7 8 16 |
Задача 12 - тук има грешка във втория пример, където първо трябва да се изведе броят на Nakov, след това на SoftUni, защото N е преди S в азбуката (в условието се иска да се изпишат по азбучен ред).
Не съм изрешил всички задачи, но погледнах условията набързо и не мога да открия други неточности. Все пак, ако има такива, добре ще е да знаем и да го имаме предвид.
Поздрави!
За 13-та задача - в рамките на 1 минута доста пъти може да си заредиш една страница, да я рефрешваш и т.н. Не виждам кое му е странното при положение, че точността на часа е до минута; ако беше до секунда и там съвпадаха 1:1 тогава да.
Отосно самото решение на задачата, замислих се и аз за речник, но се отказах, понеже не видях начин да го направя. Ползвах списъци, като хич не съм се интересувал от датата и часа, ползвах само данните за сайт и време на зареждане.
Да и ти си прав, но все някъде в домашното е хубаво да упражним и речници. А и за какво са ни тогава тези дата и час?
Предлагам при проверката да считаме и двата варианта за верни (с речници и уникални дата и час, както и с листи, като се игнорират датата и часа).
Задачата иска да сметнем средно време за зареждане на страница, това дали ще стане с речници, списъци или с нещо друго няма никакво значение за мен като оценяващ. Ако програмата дава верен резултат тя работи правилно и толкоз.
На мен ми се струва излишно да отчитам дата и час и ако попадна на домашно, което ги ползва, ще напиша точно такъв коментар: "Защо? С какво ти помага това да намериш резултата, който се търси? Какво влияние оказват тези данни върху искания резултат?". Нормално е в реалността да ти дават някакви данни и не всички да са ти нужни за дадена цел. В училище малко са ни повредили всички, защото рядко в дадена задача ни се дава излишно инфо; случвало ми се е, но трябва да се прави по-често, иначе спада способността ни да мислим критично според мен.
По отношение на оценяването, ако всичко работи както трябва, не наказвам човека за това, че е намерил по-различен, макар и може би по-труден, начин (за странни/трудно разбираеми/завъртяни алгоритми, които обачв са грамотно написани и вършат това, което се иска от задачата, не отнемам точки).
ПС. Речник ползвах в друга задача, така че предполагам и другите колеги може в някоя задача да успеят да ги упражнят. Но в изпитна задача не ми се е случвало някъде да имам нужда от такъв, така че масивите и списъците според мен са доста по-важни към момента.
Като се замисля повече над тази задача то според мен този report за всяко зареждане на страница в практиката се генерира автоматично от система, която записва всичко в някакъв файл. Формата на всеки ред е зададен от системата, така че няма нужда да проверяваме в нашата програма дали въведения ред е валиден. Най-логично е нашата програма, която да намира средното време за зареждане на всеки сайт, да чете от файл. Но за целите на домашното го направих чрез четене от конзолата(както повечето колеги). Получи се доста компактно и кратко решение според мен. Първоначално пробвах с речници, но ударих на камък, защото записвах като key името на сайта, а като value - времето за зареждане на сайта. Е да, но при речниците не може да има дублиращи се ключове и заради това използвах List-ове, но на всяко value от листа задавах и key. При List няма никакъв проблем да има повтарящи се keys. Ето го моето решение:
13. AverageLoadTimeCalculator
В началото и аз като повечето колеги се чудих при въвеждане от конзолата да разбера кога е въведен последния ред на report-a. Видях, че един колега чете чрез while от конзолата, докато не попадне на празен ред и реших и аз така да го направя. А и в работата като съм гледал файлове на разни error report-и то курсора винаги се намираше на празен ред.