Професионална програма
Loading...
+ Нов въпрос
anton_mironov avatar anton_mironov 19 Точки

Трета на място нещо не ми се получи... сега включих, че ще стане със StringBuilder...


            string input = Console.ReadLine();
            int counter = 0;
            StringBuilder sb = new StringBuilder();
            sb.Append(input);
            bool trick = true;
            while (trick == true) // тук ако се напише само (trick) пак ще работи...
            {
                int temp = 0;
                for (int i = 0; i < sb.Length; i++)
                {
                    if (i + 1 < sb.Length)
                    {
                        if (sb[i] == sb[i + 1])
                        {
                            sb.Remove(i, 2);
                            counter++;
                            temp++;
                        }
                    }
                }
                if (temp == 0)
                {
                    trick = false;
                }
            }   
            
            string output = sb.ToString();
            if (output.Length > 0)
            {
                Console.WriteLine(output);
                Console.WriteLine(counter + " operations");
            }
            else
            {
                Console.WriteLine("Empty String");
                Console.WriteLine(counter + " operations");
            }
 

1
alex1966 avatar alex1966 255 Точки

Всъщност има и по - кратък и лесен начин, не знам колко е оптимален
string input = Console.ReadLine();

            short operations = 0;
            for (int i = 0; i < input.Length - 1; i++)
            {
                if (input[i] == input[i + 1])
                {
                    input = input.Remove(i, 2);
                    operations++;
                    i = -1;
                }
            }

            if (String.IsNullOrEmpty(input))
            {
                Console.WriteLine("Empty String");
            }
            else
            {
                Console.WriteLine(input);
            }
            Console.WriteLine(operations + " operations");

3
anton_mironov avatar anton_mironov 19 Точки

Благодаря колега,

Доста по-подредено и опростено... по време на изпита и аз така тръгнах да я решавам, но не се сетих да връщам една итерация назад в цикъла... Малко играчка иска, иначе не е нищо особено...

Поздрави,
Антон Миронов

1
ThePSXHive avatar ThePSXHive 436 Точки

Решавали ли сте четвърта задача? Доколкото разбирам, слоевете на куба не трябва да бъдат въвеждани като n отделни nxn матрици, а на ред по ред. По този начин така или иначе ще бъдат получени n на брой кв. матрици. За n = 3, например, при въвеждането си, първият ред ще изглежда по следния начин

ooo | soo | ooo

Отначало сметнах, че празните места не съществуват в input-a, но дори и след модификация на програмата, нулевите тестове не минават. Подозирам, че това е свързано с форматът на въвеждане, и е възможно действително да се изисква създаването и запълването на n на брой отделни квадратни матрици.

0
hwfbcisod avatar hwfbcisod 80 Точки

Относно 4-та: Аз лично си представям задачата като n квадратни матрици, където всяка от тях е слой от куба. Съответно най-левия input е квадратната матрица, която отговаря на най-горния слой в куба и т.н. Това е решението ми: http://pastebin.com/RPcrvP2V

1
bMedarski avatar bMedarski 148 Точки

Можеш ли да покажеш решението на 06. Shop Keeper . Аз успях до  50 само да добутам

0
monyarm avatar monyarm 1 Точки

Аз в момента се пробвам на Softuniada 2017 задачите за да си тествам знанията, но не ми излиза 3та, в Visual Studio няма проблем, но в Judge,  не работи както трябва.

using System;
using System.Linq;
using System.Text.RegularExpressions;

public class SoftUni
{
    public static void Main()
    {
        string s = Console.ReadLine();
        int counter = 0;
        var matches = Regex.Matches(s, @"([a-z])\1{1}");


        while (matches.Cast<Match>().Count() > 0)
        {
            s = s.Replace(matches[0].Value, "");
            matches = Regex.Matches(s, @"([a-z])\1{1}");
            counter++;
        }

        if (s == "" || s == " ")
        {
            Console.WriteLine("Empty String");
        }
        else
        {
            Console.WriteLine(s);
        }
        Console.WriteLine($"{counter} operations");
    }
        
}


 

0