Задача Rage Quit от Programming Fundamentals Sample Exam I - October 2016
Понеже тази задача явно трябва да се реши с Regex, а аз чакам лекцията с Ивайло Кенов, защото изгледах и майския, и септемврийския курс за регекси, но определено имам нужда от много повече информация по темата, направо е необятно - нито lookbehind/..., нито positive/negative, мътна и кървава...Особено като съм online, много е трудно да събереш пъзела сам, само с четене от интернет,...
Това е решението ми без регекс: http://pastebin.com/40nLkK1N
Обаче дава само 10т. Има тестове, които гърмят за време /тестовете са поместени в C# Advanced Exam - 19 юли, но са нечетими за мен/, други не изчисляват правилно... Това char.IsDigit не работи, както очаквам...
Задачата е тази: https://judge.softuni.bg/Contests/Practice/Index/331#2
Моля някой да отдели време да обясни къде бъркам.
Ако промениш result да ти е StringBuilder, нпр., и след това му вземеш дължината с неповтарящите му се символи, /защото като лист не знам как да го преработя за достигане на същата идея/, :
var count = result.ToString().Distinct().Count();
Console.WriteLine($"Unique symbols used: {count}");
тогава ще получиш 100/100. Не мога да ти кажа защо, авторските тестове са прекалено дълги, за да разбера кой йероглиф се чете един път в result и два пъти в uniqueSymbols. :)
Всъщност, ако разбереш, моля пиши.
Да не би авторския да е грешен.
Щото и със сортед сет гърми на един тест и на един нулев, на същите, дето и със хаш сет гърми.
Ама няма символи, дето се повтарят на нулевия. Сортед сет ги сортира и се вижда, че са уникални. Съгласно дадения вход излиза, че авторския отговор на нулевия тест е грешен.
По вероятно е метода Дистинкт да е бъгав, защото, няма как сетовете грешно да преброят символ в повече. Това значи да изтърват два еднакви. Не може, защото или се хешират на едно място, или се сортират на едно място.
Затуй му се вика сет, защото по природа държи само уникални елементи.
Със Дистинкт.Каунт върху същия стринг билдър дава 100 точки, ама е грешно. Явно метода е бъгав.
Нищо не е бъгаво. Има уловка в условието че повторението може да е 0 - т.е. да не се включва. Затова трябва да се проверява крайният резултат за уникални символи, а не предварително.