Loading...
YanaStamenova avatar YanaStamenova 21 Точки

Задача от методси - Array Manipulator C#

Здравейте, 

на задача Array Manipulator получавам 40/100. Zero Тестовете са ок, гледах условията няколко пъти, но не мога да открия къде имам грешка. Може ли малко помощ: 

https://pastebin.com/s8DKsACh

 

Благодаря

0
Module: C# Advanced
RadostinStoychev avatar RadostinStoychev 128 Точки
Best Answer

Ето едно решение с методи за всяка операция.
https://pastebin.com/LUUtMhVd
Някъде в коментарите видях, че е станало на въпрос за Concat. То е същото като стрингосването :D.
Например:

string str = "simple";
str = str + " text";

Тоест Concat e абсолютно същото като + или +=. Ако искаш да закопаеш още повече, почети за Command Interpreter, Interpreter Pattern, Interpreter Desing Pattern и т.н. По-късно в OOP-то този подход започва да се използва за разделяне на командите на отделни части. Ако имаш въпроси по кода, може да ми драснеш на лично. Успех :)

0
YanaStamenova avatar YanaStamenova 21 Точки

Мерси. Ще разгледам и твоето решение. Новата информация, която трябва да науча всеки ден си расте експоненциално :) Става много забавно. 

1
YanaStamenova avatar YanaStamenova 21 Точки

Ето един въпрос. Ще можеш ли да  ми обясниш този ред код:  message = (index >= 0) ? $"{index}" : "No matches";

Тази въпросителна съм я срещала и на други места, но не мога да схвана какво прави. Намерих в  интернет ?? тази опция, но не е същото.

Благодаря!

1
RadostinStoychev avatar RadostinStoychev 128 Точки

Това е тернарен оператор (ternary). Накратко по-съкратен синтаксис на if-else.
В ляво е условието, след това въпросителна и 2та възможни изхода разделени с ":"
(условие) ? (изход 1) : (изход 2)
Тоест същото като:

if (index >= 0)
{
    message = index;
}
else
{
    message = "No matches";
}

Когато имаш 2 проверки можеш да го позлваш, защото е по-кратко като синтаксис. Може и да се нестват, за да обхванеш повече проверки if -- else if -- else if -- else... Но нестване на тернарен оператор е малко грозничко и нечетимо. Ако са само if -- else е доста приятно (Syntactic sugar). Ето още един пример с принтене и по 2та начина, за да е по-ясно:

int a = 10;
int b = 2;

Console.WriteLine(a > b ? "a is bigger" : "b is bigger");

if (a > b)
{
    Console.WriteLine("a is bigger");
}
else
{
    Console.WriteLine("b is bigger")
}

Ето един линк от Майкрософт за тернарния оператор:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator
И един от dot net perls:
https://www.dotnetperls.com/ternary

1
14/06/2019 19:46:54
YanaStamenova avatar YanaStamenova 21 Точки

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

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

1
s.boyadjiev avatar s.boyadjiev 9 Точки

RadostinStoychev, колко красив код!!! Като видях твоето решение и после си погледнах моя код, леко ми се повдигна :D . Надявам се и аз да пиша така скоро, но честно казано не вярвам да е близките месеци. Все пак съм доволен, че успях да добутам 100/100 сам, макар и с 300 реда грозен код. Оптимизацията ще я тренираме по-натам :) .

1
16/10/2019 11:02:28
RadostinStoychev avatar RadostinStoychev 128 Точки

Xaxa Благодаря ти s.boyadjiev

Сега като си гледам кода, мисля че може да стане много по-добре, но здраве да е :D. Оптимизацията по-добре я прави на момента, че после няма да се върнеш на тази задачка :D. Не оставяй днешната работа за утре. Успех :)

0
s.boyadjiev avatar s.boyadjiev 9 Точки

Не ми е зора задачата. Харесвам принципа: "Ако работи, не го пипай". Надявам се, че с увеличаване обема на наученото, оптимизацията ще става от самосебе си.

Поздрави!

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