Loading...
DHristoskov avatar DHristoskov 211 Точки

[Homework] Advanced C# - Strings and Text Processing

Здравейте колеги, видях че са качени задачите от следващите домашни и не се стърпях.Това е което сътворих, надявам се да бъдат полезни.

1.Reverse String

2.String Length

3.Count SubString Occurrences

4.Text Filter

5.Unicode Characters

6.Palindromes

7.*Letters change Numbers

Тагове:
13
C# Advanced 11/05/2015 18:38:43
Filkolev avatar Filkolev 4482 Точки

Имайте предвид, че докато не качим домашните в страницата на курса, задачите търпят промени (добавят се и се премахват задачи). След това правим основно козметични промени при открити грешки.

За тези, които нямат търпение, проверявайте какво е заданието след качването му на страницата, за да няма неприятни изненади при проверките :)

2
DHristoskov avatar DHristoskov 211 Точки

Благодаря за съвета, допуснах че може да се случи, но ще променям решенията, ако има разминаване със сега качените.

0
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

ТУК са моите имплементации за това домашно.
Прегледах твоите кодове и дори си взех някоя друга хитринка :)
А иначе, ако искаш погледни ми кода на 6. Palindromes. Малко по-различен е от твоя, защото съм заложила на идеята, че ако стрингът се ревърсне и е същия значи е палиндром.
Успех от мен!

7
anieze1 avatar anieze1 2 Точки

Здравейте,

В момента съм на трета задача  Problem 3.       Count Substring Occurrences, възможно ли е да ми обясните по-подробно вашето решение?

Благодаря,

0
GalyaGeorgieva avatar GalyaGeorgieva 88 Точки

Т.като е минало доста време и нямам условието пред себе си предполагам, че се иска да се провери колко пъти присъства даден стринг в друг.

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

Цикълът се завърта докато не свърши масива или не се изчерпят съвпаденията.

п.п дано не съм пропуснала нещо, но без условие е така :)

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравейте колеги,

@DHristoskov,

Много ми хареса решението на задача 3.Count SubString Occurrences.

@nstanevski,

много оригинално решение на задача 6. Palindromes,

От моите решения като по-различни искам да споделя:

01. Reverse-String

02. String-Length защото съм ги решила по на един ред,

04. Text-Filter не ми е свръх-различна от на другите колеги, по нея имам по-скоро въпрос:

Resharper ми подсказва, че можело това заместване на думи със зваздички, което съм направила, да се направи с LINQ, вместо с foreach - стана ми любопитно, и не можах да намеря как, при положение че повече от една дума ще се заместват, и при положение, че думите по които филтрирам са ми в string[] filter, а като опитам да напиша: filter.Foreach( ... ) получавам съобщение "Cannot resolve symbol foreach" - т.е. в крайна сметка това множествено заместване може ли да се направи с LINQ, но без Regex (с LINQ + Regex - знам как да го направя).

Благодаря предварително за всякакви идеи :)

 

5
22/06/2015 14:09:29
Filkolev avatar Filkolev 4482 Точки

Когато Resharper ти казва, че може даден цикъл да се замени с LINQ заявка, просто маркираш въпросния цикъл (там, където е подчертан в зелено) и даваш Alt + Enter. Доста е полезно да се сравнят двата варианта, така и доста по-хубаво се разбират заявките, след като знаеш точно какво прави даденото парче код (все пак сама си си разписала алгоритъма, просто Resharper го е пренаписал под друга форма).

2
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Добре че попитах, и много благодаря!

Ето и LINQ варианта пренаписан от Resharper.

4
DHristoskov avatar DHristoskov 211 Точки

Благодаря, KatyaMarincheva решението ти на 04. Text Filter е изключително кратко и много по - ясно от моето, много ми харесва. Решението на 01. Reverse String си успяла да го съкратиш максимално едва ли има по-кратък вариант.Супер!

П.С .Гледам времето на постване и оставам изумен вие не спите ли KatyaMarincheva – 04:25:21, Filkolev– 06:30:49, GalyaGeorgieva– 00:52:12.

4
13/05/2015 09:11:40
onefen avatar onefen 27 Точки

Уважаеми колега DHristoskov,

 

Само да вмъкна, че решението ти на задача 4. Text Filter  не е правилно, защото си изплозвал Regular Expressions, а в условието на домашното пише, че това не е позволено.

Note: You are NOT allowed to use regular expressions in this homework assignment.

Има начини това да стане и по трудния начин. Ето моят вариант:

http://pastebin.com/wVHTYPtk

1
13/05/2015 19:03:08
DHristoskov avatar DHristoskov 211 Точки

Темата е направена преди домашната да бъде официално качена. Варианта, който съм решил нямаше такова условие.Ако проследиш темата от самото начало ще забележиш, че Filkolev това коментира, че има вероятност да има промени в официално качената домашна, и ако има да поправя решенията си.Това е причината да има разминаване.Към онзи момент задачата беше коректна и отговаряше на условието.

0
13/05/2015 20:03:24
onefen avatar onefen 27 Точки

https://github.com/onefen

Последните ми няколко домашни съм ги качил тук. Ако някой го интересува де

1
NikolayUzunov avatar NikolayUzunov 7 Точки

Здравейте на всички . Искам да попитам на 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 . Нещо ми куца . Някакви идеи защо гърми ? 

 

0
Filkolev avatar Filkolev 4482 Точки

Задачата не се решава с регекс, защото регекса хваща мачовете без припокриване. А както може да видиш по примерите в условието, припокриването е позволено.

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Добромире,

Моите искрени почитания за това домашно  - всичките ти решения са страшно оригинални:

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

            min++;
            max--;
Аз лично се стремя към далеч по-кратки решения - но твоите са точно като за снощния lab - със собствен алгоритъм за всичко. Радвам се че ги разгледах, и тайно си планирам, ако ми се наложи, да ги посетя пак по време на на изпита ;)

 

 

5
dakata666 avatar dakata666 3 Точки

Може ли малко разяснение за 3-тата задача защо въртиш цикъла до "< text.Length - searchWord.Length + 1" ,че не разбирам логиката ? :)

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравейте пак :)

Относно точките във форума - още един цирков пример:D.Kostadinov (Точки: 5) 14/05/2015 02:52:00

https://softuni.bg/forum/4197/Homework-Advanced-CSharp-Strings-and-Text-Processing

Добромир е постнал невероятно хубаво домашно, аз съм писала просто за да изкажа възхищението си, радвам се че познавам толкова умен човек  - той има 1 точка за задачите, аз 5 за коментара - поредната шега, показваща че точки и ценност на поста вече ще бъдат две диаметрално противоположни понятия :)

Колеги, предлагам да си говорим за код, за собствено удоволствие само - вече само минус точките са официалното признание за полезност във форума  - справка тук, а съм убедена, че няма да е само тук .............

-1
pataroka avatar pataroka 319 Точки

Някой може ли да ми каже защо Judge ми дава 70 точки на това решение:

LettersChangeNumbers

0
15/05/2015 03:39:41
Filkolev avatar Filkolev 4482 Точки

Решенията не са публични, само своите може да виждаш; ще трябва да копираш кода някъде.

0
Filkolev avatar Filkolev 4482 Точки

Заради сплитването е. Условието казва, че между стринговете може да има whitespaces. Освен спейс може да подадат и друго за разделител, в случая в тия три теста има табулации.

1
EvenOdds avatar EvenOdds 7 Точки

Качвам и моето домашно, за да има по-голямо разнообразие.

1
15/05/2015 14:29:22
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.