C# Advanced - 06.StringsAndTextProcessing (2016)


2

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

Ще ми е интересно да видя и ваши решения на 8-ма и 15-та задача. :)

Ето моите: HW-GitHub

EDIT: Между другото, за разцъкване на регулярни изрази мога да препоръчам The Regex-Coach (цък)




Отговори



3
Ето едно решение на 15та задача:

using System; using System.Text.RegularExpressions; namespace Homework { class ExtractSentences { static void Main(string[] args) { string input = Console.ReadLine(); Regex r = new Regex(@"(<\s*a\s*href\s*=)\s*""(.*?)""\s*>(.*?)<\s*/\s*a\s*>"); string result = r.Replace(input, m => "[" + m.Groups[3] + "](" + m.Groups[2] + ")"); Console.WriteLine(result); } } }

от kostadinkov (25 точки)


0
Тази магия не ми е ясна.

от peter_85 (279 точки)

0
Това е регулярен израз колега.

от todor.chupov (380 точки)



1
Тук е всичко. https://github.com/ShwangShwing/telerik-academy-work/tree/master/CSharpAdvanced. За тази лекция търсете проектите, започващи с hw07-. Някои неща не се четат много, защото са преправяни единствено с идеята да тръгнат в бгкодеи, но мисля, че повечето се разбират.

от ShwangShwing (344 точки)


1

имаш отличен за 15

не бяха лесни, ама станаха

ето моите решеиня

StringsAndTextProcessing.HW

15 не е толкова елегатна :)


от mitkop (578 точки)


0
Благодаря! :) Аз 15-та, когато реших да я опиша с логика, като теб, все минавах ограничението за памет и затова реших да е с регулярен израз. Но и той ми отне доста време. Така, че твоя вриянт, може да е по-дълъг, но е също добър според мен. :)

от todor.chupov (380 точки)


2

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

Сигурно 3та задача ти е минала на bgcoder, но тествай я с примера: "(text))text(" . Според твоето решение е correct. Просто обърни и внимание, защото при друга ситуация може да си изгубиш времето да се чудиш къде е грешката. Аз направих следното:

using System;

class Program
{
    static void Main()
    {
        string inputStr = Console.ReadLine();
        int bracketsOpenIndex = 0;
        int bracketsCloseIndex = bracketsOpenIndex;
        bool isCorrect = true;
        for (int i = 0; i < inputStr.Length; i++)
        {
            if (inputStr[i] == '(')
            {
                isCorrect=false;
                bracketsOpenIndex = i;
           
                for (int j = bracketsCloseIndex + 1; j < inputStr.Length; j++)
                {
                    if (inputStr[j] == ')')
                    {
                        isCorrect=true;
                        bracketsCloseIndex = j;
                        break;
                    }
                }
            }
            else if (i> bracketsCloseIndex&&inputStr[i]==')')
            {
                isCorrect = false;
            }
        }
        Console.WriteLine(isCorrect ? "Correct" : "Incorrect");
    }
}




0

Благодаря колежке, добро уточнение! :) Аз наистина тези задачи, които са по-лесни не им отделям много време и като минат БГкодер-а, приклячвам с тях. Грешката ми беше, че моето решение брои единствено броя на отварящи и затварящи скоби и наистина в някой ситуации, дава грешен резултат.

Без да се заяждам, само да ти обърна внимание, че на същия пример твоята, задача дава същия грешен отговор, като моята. Да не си поместила стар вариянт на решението си? :)


от todor.chupov (380 точки)

0
Хахаха, така е! Благодаря, че обърна внимание. Ще си го оправя.




0

Малко шано решение за 4-та :D

            string lookedString = Console.ReadLine().ToLower();
            string input = Console.ReadLine().ToLower();

            int initialLenght = input.Length;

            input = input.Replace(lookedString, null);

            Console.WriteLine((initialLenght - input.Length)/lookedString.Length);


от cmdkick (120 точки)