Loading...
lyubamarinova avatar lyubamarinova 14 Точки

Задача Nether Realms oт изпита Programming Fundamentals /23.10.2016г.

Здравейте,

Тъй като днес много се измъчих с тази задача , дали някой може да ми каже като разгледа кода къде всъщност греша и дали изобщо съм била на прав път , защото 2 от нулевите тестове ми даваха верен резултат , а там където имам 2 inputa - грешен , в Judge не получих никакви точки. Моето решение е : http://pastebin.com/2wGvZfDJ

Благодаря.

0
Fundamentals Module
Elena123456 avatar Elena123456 235 Точки

Реших да пиша, защото задачата е актуална и до този момент, а не намирам друга тема на C#. Няколко часа решавах задачата и ще споделя решението си за насърчение на колегите, които в момента карат Фундаментал модула: https://pastebin.com/ZPqmrnaX . Междодругото тази задача много ми напомни на една епична битка от "The lord of the rings", когато джуджетата защитавали Мория и записали в своята книга и последната си битка, точно преди да загинат. Също така и ние в момента имаме задачата да запишем последната битка на демоните, след която само един ще оцелее. :)

 

1) изгубих доста време при четенето на инпута, докато осъзная, че сепараторите може да са няколко: Split(new char[] { ' ', ','},StringSplitOptions.RemoveEmptyEntries) и това вече се признава от Judge;

2) за разлика от другите задачи със стрингообработка и regex, тук  може би  се изисква четенето на масив, защото могат да се подадат, като входни данни няколко имена на демони, и като се foreаch() през масива вече се получава отделното име на демона;

3)вече, когато имаме името на демона използвам три регекса- за health, за damage и един общ за намирането на всички '*' и '/':

  •   Regex regexForHealth=new Regex(@"[^\d\+\-*\/\."" ""]");// ASCI стойностите на всички символи без тези в скобите;

            Regex regexForDamage = new Regex(@"(?:\+|-)?[0-9]+(?:\.[0-9]+)?");//сумата на всички числа, като могат да имат + или - отпред или десетична точка с числа след нея.

            Regex regexForMultiplyOrDivideSymbols = new Regex(@"[*\/]");// и вече след като сме изчислили damage чрез този регекс търсим само "*" и "/", като съответно *2 или /2.

damage = damage * 2; или damage = damage / 2; Ако по невнимание сложим "+" пред "=" вече се отдалечаваме от условието на задачата.

4) може да има и по- удачен вариант, но аз избрах да използвам два речника: един с името на демона и неговия health , и втори с името на демона и неговия damage.

5) и накрая чрез foreach и OrderBy(x=>x.Key) ще принтирам по азбучен ред имената на всички демони с техния health и damage;

Поздрави и успех на изпита!

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