Loading...
arnold avatar arnold 50 Точки

Rage Quit (More Exercise: Regular Expressions C#)

Аз ли нещо не мога да вникна в условието на задачата, не знам защо не ми се получава, какво значи специален символ, след като в условието е казано, че всички символи преди числата.

Изкарвам 57 символа, а искат 53. Ако някой има идея, ще се радвам да помогне, че вече се отчаях laugh По принцип е от материала с регекс, ама с регекс не успях да измисля алгоритъм и тръгнах по бавния, но сигурен уж начин.

Дали са някакви елементарни inputs в условието, обаче с този от тестовете в judge, разцепват мрака при тази задача :D С този вход гърмят специалните символи, иска 53, а не 57:

e-!btI17z=E:DMJ19U1Tvg VQ>11P"qCmo.-0YHYu~o%/%b.}a[=d15fz^"{0^/pg.Ft{W12`aD<l&$W&)*yF1WLV9_GmTf(d0($!$`e/{D'xi]-~17 *%p"%|N>zq@ %xBD18<Y(fHh`@gu#Z#p"Z<v13fI]':\Iz.17*W:\mwV`z-15g@hUYE{_$~}+X%*nytkW15

https://pastebin.com/qUzPx8xk

 

https://judge.softuni.bg/Contests/Practice/Index/1754#1

 

Rage Quit

Every gamer knows what rage-quitting means. It’s basically when you’re just not good enough and you blame everybody else for losing a game. You press the CAPS LOCK key on the keyboard and flood the chat with gibberish to show your frustration.

Chochko is a gamer, and a bad one at that. He asks for your help; he wants to be the most annoying kid in his team, so when he rage-quits he wants something truly spectacular. He’ll give you a series of strings followed by non-negative numbers, e.g. "a3"; you need to print on the console each string repeated N times; convert the letters to uppercase beforehand. In the example, you need to write back "AAA".

On the output, print first a statistic of the number of unique symbols used (the casing of letters is irrelevant, meaning that 'a' and 'A' are the same); the format shoud be "Unique symbols used {0}". Then, print the rage message itself.

The strings and numbers will not be separated by anything. The input will always start with a string and for each string there will be a corresponding number. The entire input will be given on a single line; Chochko is too lazy to make your job easier.

Input

  • The input data should be read from the console.
  • It consists of a single line holding a series of string-number sequences.
  • The input data will always be valid and in the format described. There is no need to check it explicitly.

Output

  • The output should be printed on the console. It should consist of exactly two lines.
  • On the first line, print the number of unique symbols used in the message.
  • On the second line, print the resulting rage message itself.

Constraints

  • The count of string-number pairs will be in the range [1 … 20 000].
  • Each string will contain any character except digits. The length of each string will be in the range [1 … 20].
  • The repeat count for each string will be an integer in the range [0 … 20].
  • Allowed working time for your program: 0.3 seconds. Allowed memory: 64 MB.

Examples

Input

Output

Comments

a3

Unique symbols used: 1

AAA

We have just one string-number pair. The symbol is 'a', convert it to uppercase and repeat 3 times: AAA.

Only one symbol is used ('A').

aSd2&5s@1

Unique symbols used: 5

ASDASD&&&&&S@

"aSd" is converted to "ASD" and repeated twice; "&" is repeated 5 times; "s@" is converted to "S@" and repeated once.

5 symbols are used: 'A', 'S', 'D', '&' and '@'.

 

 

0
Fundamentals Module 13/08/2021 23:29:11
svephoto avatar svephoto 1191 Точки
Best Answer

Здравей, arnold,

 

Твоето решение като цяло е вярно, само накрая преди печатането за броя уникални символи си добави

 

           string rageMessage = builder.ToString();
           int uniqueSymbolsCount = rageMessage.Distinct().Count();

 

.Distinct().Count() ти връща броя на уникалните символи в стринга. Ако ти се чете: http://msdn.microsoft.com/en-us/library/bb348436.aspx. cool

 

При това положение допълнителният StringBuilder textNoDigit на ред 48 не ти е нужен, както и цялата част за него, т. е. просто махаш всичко от ред 48 до ред 68. Добави си и using System.Linq; горе и съответно на първия ред за отпечатване в плейсхолдъра сложи uniqueSymbolsCount:

 

            Console.WriteLine($"Unique symbols used: {uniqueSymbolsCount}");

 

Цялото решение: https://pastebin.com/iakj08Nw. laugh

1
14/08/2021 14:59:02
arnold avatar arnold 50 Точки

Супер, мерси много. Тъкмо си реших финалния изпит от Фундаменталс, там имаше доста по-лесни задачи от тези в More Exercises laugh 

Сега се чудя да продължа да решавам от More Exercises или да започвам от новия материал, че тия задачи от More Exercises те приземяват и те карат да се чувстваш малък :D 

0
14/08/2021 14:57:18
svephoto avatar svephoto 1191 Точки

Моля-моля! yes laugh

Поздравления за отличното представяне на финалния изпит от Фундаменталс - като гледам си си изкарал максималния брой точки, браво! cool

Сега най-вече си дай известно време за почивка, понеже ти е нужна - само съвет де, ти си постъпи както решиш. smiley Иначе няма лошо да решиш задачите от More Exercises, "колкото повече - толкова повече", нали знаеш. laugh Така е, трудните задачи са най-полезни.

2
arnold avatar arnold 50 Точки

Да, определено ще има нужда от почивка, че имаше дни, в които се решаваха задачи по 12  часа на ден laughама няма и да е прекалено голяма почивката. След Бейсик направих грешка 2 месеца да не пипна код и после беше бая тегаво докато влезна пак в час laugh  тогава също и не осъзнавах още важността на тези задачи и за това сега във Фундаменталс наблегнах колкото можех над това..

Мерси за съветите, успех и на теб, ще пускам скоро пак кодове с проблеми :)

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