C# Advanced - 06. Strings and Text Processing-HOMEWORK


3
Пускам тема за шестото домашно с цел всичко около него да се дискутира тук.



Отговори



1
моля за условието, че не го виждам на сайта

от catnadeen (382 точки)


2

Ето тук са условията:

https://github.com/TelerikAcademy/CSharp-Part-2/tree/master/Topics/06.%20Strings-and-Text-Processing/homework


от Pepi.Ka (922 точки)


0
За да не отварям нова тема, някой би ли ми казъл (или даде линк) на условията на малките задачки, които Коцето показваше като дема днес? Благодаря. 



3

от kon.simeonov (5238 точки)


1
Здравейте нещо се запънах със задача 4. Sub String in Text. Нулевия тест минава но другите не.Хвърчат на ляво и на дясно Incorrect Answer и Run Time Error.Някаква идея от къде може да е проблема.Мъча се два часа вече и не мога да го измисля.
using System; using System.Linq; using System.Text; using System.Collections.Generic; using System.Threading.Tasks; using System.Text.RegularExpressions; class SubStringInText { static void Main() { string keyword = Console.ReadLine(); string input = Console.ReadLine(); int count = 0; foreach (Match item in Regex.Matches(input, keyword)) { count++; } Console.WriteLine(count); } }

от chernogorov (220 точки)


6

Колега, аз съм решила задачата така 100/100

using System; using System.Linq; class SubstringInText { static void Main() { string pattern = Console.ReadLine(); string text = Console.ReadLine(); int counter = 0; for (int i = 0; i < text.Length - pattern.Length + 1; i++) { if (text.Substring(i, pattern.Length).Equals(pattern, StringComparison.OrdinalIgnoreCase)) counter++; } Console.WriteLine(counter); } }

И аз пробвах преди това с RegularExpressions, но успях да докарам само до 40/100.


от Pepi.Ka (922 точки)

1

Регулярните изрази са по-бавни от IndexOf.

Също имай предвид и това "perform case insensitive search" (не съм сигурна дали има такива тестове).


от Emily (15 точки)



2
Явно на 6та задача има или някакъв бъг или всички грешат, но засега няма никой над 85 точки (включително и аз).

от magadisho (823 точки)


6
Уви, не е бъг. С любезното съдействие на един от трейнърите се оказа, че трябва да вземем под внимание по-специалните символи, escape sequence-ите например \\, \n и тн, които биха оказали влияние върху самата дължина на въвеждания стринг и впоследствие върху резултата.  Не съм решила още задачата, затова не съм и много сигурна дали ще тръгне по тази логика, но като цяло в тази насока търсете решението....и сори за половинчатото обяснение. 

от Daniela_Popova (1125 точки)

2

Здравей, 

А казаха ли какво да правим с тези специални символи?


от dushka.dragoeva (1324 точки)



1

Още решения

Към момента 850/ 1000.

Work in progress...


от todorovh (2055 точки)


1
Хора,как се справихте с 8-ма задача ?! ;s


2

04. Sub-string in text

След няколко леко промени - 100/100. Главното е, че пак трябва да се направи "нещо" за да се премахнат разликите между малки и главни букви:

using System;

namespace Substring_In_Text
{
    class Sub_string_in_text
    {
        static void Main()
        {
            // Get Input
            var toFind = Console.ReadLine();
            toFind = toFind.ToLower();
            var toSearch = Console.ReadLine();
            toSearch = toSearch.ToLower();

            var Counter = 0;

            for (int curIndex = 0;
                     curIndex < toSearch.Length - toFind.Length + 1;
                     curIndex++)
            {
                // Find the index of the current occurance.
                var indexFound = toSearch
                    .IndexOf(toFind, curIndex);

                if (indexFound < 0)
                {
                    break;
                }
                else
                {
                    Counter++;
                    curIndex = indexFound + toFind.Length - 1;
                }
            }
            Console.WriteLine(Counter);
        }
    }
}


от mitku (334 точки)


1
Зациклих на 8-ма, след като научих какво е Regex, успях да изкарам 40/100. Какво изтървам?
http://pastebin.com/J5K1Kipm

от Tony_Nikolov (633 точки)


1
Ами провери колко ще ти даде без trim

от dushka.dragoeva (1324 точки)


0

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

Имам проблем с Correct brackets задачата два ми само 85/100. Мисля че имам всички случаи, в които ми е incorrect, но в тези коите ми е correct ми създава проблеми. Кода ми е тук.

Благодаря много за помоща колеги :Д :Д .


от telerik2014 (420 точки)


3
Броиш броя на ")" и броя на "(", сравняваш ги и ако е равен броят им = Correct.

от Tony_Nikolov (633 точки)

2

Здравейте,

моето решение стана малко дълго, но така успях да реша задачата:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; class CorrectBrackets { public static string BracketsArePutCorrectly(string word) { int countOpenBreackets = 0; int countCloseBreackets = 0; for (int i = 0; i < word.Length; i++) { if (word[i] == '(') { countOpenBreackets++; } if (word[i] == ')') { countCloseBreackets++; if (countCloseBreackets > countOpenBreackets) { return "Incorrect"; } } } if (countOpenBreackets > countCloseBreackets) { return "Incorrect"; } else { return "Correct"; } } static void Main() { string word = Console.ReadLine(); Console.WriteLine(BracketsArePutCorrectly(word)); } }





5

Като гледам - никой още не е успял със задача 15. Replace tags.

Загубих половин ден, написах 10-ина варианта... със СтрингБилдер; без СтрингБилдер; с Лист от стрингове; без Лист; с Масив вместо лист; с отделен метод; без отделен метод; накрая и само с един стринг (този който се въвежда), останалото - целочислени операции. И не... и не - я мемори лимит, я тайм лимит, я и двете и т.н. 0/100.

Май някой не е гледал изобщо лимитите за тази задача.


от mitku (334 точки)


1
Аз на 15-та само нулевия тест мога да мина.

от Emily (15 точки)

1
Като гледам всички сме така. Учудих се, че подредбата на нулевия тест е различна от указаната в задачата [URL=…](…/URL).- не е като [our site]... Ще видим какво ще кажат трейнърите. 

от Slavka74 (436 точки)



1

На задача 3 направих метод, който да бори колко отварящи и колко затварящи скоби имам и след това друг метод, който да връща false ако броят им не е равен и след това, ако е равен, да сравнява дали след всяка отваряща има затварща. Изкарах 97/100. Пробвах да търся поне 1 символ между тях и резултатът беше същия. Пробвах да търся поне 3 символа между тях (ако евентуално за валидни скоби се брои да има a+b или нещо такова), но изкарах около 40/100. Разгледах по форума и видях, че всички със 100/100 са направили проверка единствено дали броят на отварящи и затварящи скоби е равен. Изтрих моята проверка дали след отваряща има затваряща и изкарах 100/100.

Т.е. някъде в тестовете има тест от рода на:

)x(

който минава като "Correct", въпреки че би трябвало това да са невалидни скоби. Всъщност не някъде, ами 5-ти тест.

Естесвено, може аз да имам грешка в метода и някъде да не броя правилно. Интересно ми е какъв е този 5-ти тест.

EDIT: Открих грешка в моя код, поради която вероятно не минавам този тест. Ще се опитам да я коригирам, защото е факт, че с решенията които дават 100/100 ")x(" се брои за валидно.

EDIT2: Оправих грешката, сега изкарвам 100/100 с първото ми решение, което при ")x(" ще върне "incorrect", което според мен трябва да е решението на задачата.




1

Важно е общото разпределение на скобите. В някои случаи ")x(" е валидно, в други - не. За целия израз е важно всяка отваряща скоба да има затваряща след нея, респективно всяка затваряща да има отваряща преди нея. Поне аз това разбирам под коректни скоби. Затова и в решението си търся само затварящата след последната отваряща и обратно. Ето кода.


от Slavka74 (436 точки)

1
Мисълта ми е, че решение, което просто гледа еднакъв брой ли са не е коректно, а дава 100/100. Ако целия израз е ")x(+)y(" ще каже, че са верни, а очевидно не са.




1
Аз пък не мога да реша за 100/100 най-лесната задача - 06. String Length.

string str = Console.ReadLine();

string result = str.PadRight(20, '*');

Console.WriteLine(result);

Какво повече е нужно, за да се реши?



2

Да добавиш:

str = str.Replace(@"\", string.Empty);



1
Благодаря!