[Homework] Advanced C# - Strings and Text Processing
Здравейте колеги, видях че са качени задачите от следващите домашни и не се стърпях.Това е което сътворих, надявам се да бъдат полезни.
Здравейте колеги, видях че са качени задачите от следващите домашни и не се стърпях.Това е което сътворих, надявам се да бъдат полезни.
Имайте предвид, че докато не качим домашните в страницата на курса, задачите търпят промени (добавят се и се премахват задачи). След това правим основно козметични промени при открити грешки.
За тези, които нямат търпение, проверявайте какво е заданието след качването му на страницата, за да няма неприятни изненади при проверките :)
ТУК са моите имплементации за това домашно.
Прегледах твоите кодове и дори си взех някоя друга хитринка :)
А иначе, ако искаш погледни ми кода на 6. Palindromes. Малко по-различен е от твоя, защото съм заложила на идеята, че ако стрингът се ревърсне и е същия значи е палиндром.
Успех от мен!
Здравейте,
В момента съм на трета задача Problem 3. Count Substring Occurrences, възможно ли е да ми обясните по-подробно вашето решение?
Благодаря,
Т.като е минало доста време и нямам условието пред себе си предполагам, че се иска да се провери колко пъти присъства даден стринг в друг.
1. string input = Console.ReadLine().ToLower(); -това е ясно
2. string forSearch = Console.ReadLine(); - и това е ясно
3. int poss = input.IndexOf(forSearch); -намираш позицията на първият срещнат стринг, който търсиш
4. int counter = 0; - правиш си брояч за намерените съвпадения.
5. while (poss >= 0 && poss <= input.Length) - въртиш цикъл. Тук характерното, е че ако poss е отрицателно число значи не е намерил съвпадение и излиза от цикъла или ако poss стане по-голям от размера на стринга пак излиза от цикъла и тогава резултатът на брояча си остава 0
6. counter++; - щом е влязъл в цикъл значи имаш съвпадение и добавяш 1 (counter++ е равносилно на counter+=1 или counter = counter +1)
7. poss = input.IndexOf(forSearch, poss + 1); - тук казваш вече да търси стринга с 1 позиция напред от намерената вече и да върне нова стойност на poss
Цикълът се завърта докато не свърши масива или не се изчерпят съвпаденията.
п.п дано не съм пропуснала нещо, но без условие е така :)
Здравейте колеги,
Много ми хареса решението на задача 3.Count SubString Occurrences.
много оригинално решение на задача 6. Palindromes,
От моите решения като по-различни искам да споделя:
02. String-Length защото съм ги решила по на един ред,
04. Text-Filter не ми е свръх-различна от на другите колеги, по нея имам по-скоро въпрос:
Resharper ми подсказва, че можело това заместване на думи със зваздички, което съм направила, да се направи с LINQ, вместо с foreach - стана ми любопитно, и не можах да намеря как, при положение че повече от една дума ще се заместват, и при положение, че думите по които филтрирам са ми в string[] filter, а като опитам да напиша: filter.Foreach( ... ) получавам съобщение "Cannot resolve symbol foreach" - т.е. в крайна сметка това множествено заместване може ли да се направи с LINQ, но без Regex (с LINQ + Regex - знам как да го направя).
Благодаря предварително за всякакви идеи :)
Когато Resharper ти казва, че може даден цикъл да се замени с LINQ заявка, просто маркираш въпросния цикъл (там, където е подчертан в зелено) и даваш Alt + Enter. Доста е полезно да се сравнят двата варианта, така и доста по-хубаво се разбират заявките, след като знаеш точно какво прави даденото парче код (все пак сама си си разписала алгоритъма, просто Resharper го е пренаписал под друга форма).
Добре че попитах, и много благодаря!
Ето и LINQ варианта пренаписан от Resharper.
Благодаря, KatyaMarincheva решението ти на 04. Text Filter е изключително кратко и много по - ясно от моето, много ми харесва. Решението на 01. Reverse String си успяла да го съкратиш максимално едва ли има по-кратък вариант.Супер!
П.С .Гледам времето на постване и оставам изумен вие не спите ли KatyaMarincheva – 04:25:21, Filkolev– 06:30:49, GalyaGeorgieva– 00:52:12.
Уважаеми колега DHristoskov,
Само да вмъкна, че решението ти на задача 4. Text Filter не е правилно, защото си изплозвал Regular Expressions, а в условието на домашното пише, че това не е позволено.
Note: You are NOT allowed to use regular expressions in this homework assignment.
Има начини това да стане и по трудния начин. Ето моят вариант:
http://pastebin.com/wVHTYPtk
Темата е направена преди домашната да бъде официално качена. Варианта, който съм решил нямаше такова условие.Ако проследиш темата от самото начало ще забележиш, че Filkolev това коментира, че има вероятност да има промени в официално качената домашна, и ако има да поправя решенията си.Това е причината да има разминаване.Към онзи момент задачата беше коректна и отговаряше на условието.
Последните ми няколко домашни съм ги качил тук. Ако някой го интересува де
Здравейте на всички . Искам да попитам на Problem3. Count SubString Occurences ми дава грешни резултати.
string input = Console.ReadLine();
string compare = Console.ReadLine();
int timesAppear = Regex.Matches(input, compare, RegexOptions.IgnoreCase).Count;
Console.WriteLine(timesAppear);
Това ми е решението . На първия пример с "wel" е точен отговора 4. На другите обаче с "aa" e 3 вместо 5, на "aba" е 2 вместо 3 . Нещо ми куца . Някакви идеи защо гърми ?
Задачата не се решава с регекс, защото регекса хваща мачовете без припокриване. А както може да видиш по примерите в условието, припокриването е позволено.
Здравейте колеги,
Реших и аз да споделя домашното си, като главно искам да чуя вашите препоръки, с цел подобряване на кода ми. Всякакви критики са добре дошли :)
03. Count Substring Occurrences
Здравей Добромире,
Моите искрени почитания за това домашно - всичките ти решения са страшно оригинални:
Problem 3. Count Substring Occurrences
search = text.Substring(i, searchWord.Length);
Problem 4. Text Filter
text = text.Replace(word, new string('*', word.Length));
Problem 6. Palindromes
Може ли малко разяснение за 3-тата задача защо въртиш цикъла до "i < text.Length - searchWord.Length + 1" ,че не разбирам логиката ? :)
Здравейте пак :)
Относно точките във форума - още един цирков пример:D.Kostadinov (Точки: 5) 14/05/2015 02:52:00
https://softuni.bg/forum/4197/Homework-Advanced-CSharp-Strings-and-Text-Processing
Добромир е постнал невероятно хубаво домашно, аз съм писала просто за да изкажа възхищението си, радвам се че познавам толкова умен човек - той има 1 точка за задачите, аз 5 за коментара - поредната шега, показваща че точки и ценност на поста вече ще бъдат две диаметрално противоположни понятия :)
Колеги, предлагам да си говорим за код, за собствено удоволствие само - вече само минус точките са официалното признание за полезност във форума - справка тук, а съм убедена, че няма да е само тук .............
Някой може ли да ми каже защо Judge ми дава 70 точки на това решение:
Решенията не са публични, само своите може да виждаш; ще трябва да копираш кода някъде.
Готово!
Заради сплитването е. Условието казва, че между стринговете може да има whitespaces. Освен спейс може да подадат и друго за разделител, в случая в тия три теста има табулации.
Ето и домашното от мен :)
Благодаря за съвета, допуснах че може да се случи, но ще променям решенията, ако има разминаване със сега качените.