PetarNeshkov5360 23 Точки

Problem 1. Activation Keys-Programming Fundamentals Final Exam

Здравейте! Кодът ми получава 85/100. Интересното е, че се чупи на 2рия тест, а в word документа, където е условието, моят код е правилен,а в джъдж се разминава едната буква. Ще бъда благодарен, ако някой открие грешката ми.

Благодаря предварително!

Моят код:https://pastebin.com/Cq6KPmyc

Линк към judge:https://judge.softuni.bg/Contests/Practice/Index/2302#0

Условие:

Programming Fundamentals Final Exam 04.04.2020

Problem 1. Activation Keys

You are about to make some good money, but first you need to think of a way to verify who paid for your product and who didn`t. You have decided to let people use the software for a free trial period and then require an activation key in order to continue to use the product. The last step before you could cash out is to design a program that creates unique activation keys for each user. So, waste no more time and start typing!

The first line of the input will be your raw activation key. It will consist of letters and numbers only.

After that, until the "Generate" command is given, you will be receiving strings with instructions for different operations that need to be performed upon the raw activation key.

There are several types of instructions, split by ">>>":

• Contains>>>{substring} – checks if the raw activation key contains the given substring.
• If it does prints: "{raw activation key} contains {substring}".
• Flip>>>Upper/Lower>>>{startIndex}>>>{endIndex}
• Changes the substring between the given indices (the end index is exclusive) to upper or lower case.
• All given indexes will be valid.
• Prints the activation key.
• Slice>>>{startIndex}>>>{endIndex}
• Deletes the characters between the start and end indices (end index is exclusive).
• Both indices will be valid.
• Prints the activation key.

Input

• The first line of the input will be string and it will consist of letters and numbers only.
• After the first line, until the "Generate" command is given, you will be receiving strings.

Output

• After the "Generate" command is received, print:
• "Your activation key is: {activation key}"

Examples

Тагове:
0
28/10/2020 00:47:58
Elena123456 224 Точки

споделям две решение на задачата, като в първото съм използвала Substring() и Replace() за Flip и Slice командите, а във второто- StringBuilder() с Remove -() и for цикъл.

https://pastebin.com/jAMjqdhT - със Substring() и Replace();

https://pastebin.com/xVQsQbfX - със StringBuilder() с Remove -() и for цикъл.

И двете решения са 100/100, но най-правилното е това със StringBuilder().

Ето един case,  в който решението без StringBuilder() ще изкара неправилен резултат, а този със StringBuilder()-правилен.

При input: bbbb и команда Flip>>>Upper>>>1>>>3 решението без StringBuilder() дава output- BBBB, което не е очаквания резултат.

При същия инпут и същата команда решението със StringBuilder()  дава output- bBBb, което е и правилния резултат.

Поздрави!

1
yanchev.ilian 13 Точки

Привет,

Бих желал да попитам защо използваш Math.Max, респективно Math.Min при намирането на index-те?

Също искам да разбера и тук защо ги изваждаш?

1. if (validEndIndex >= validStartIndex)

2.                     {

3.                         int lengthToRemove = validEndIndex - validStartIndex;

4.                       //sb.Remove(validStartIndex, lengthToRemove);

5.                     }

Благодаря предварително!

Поздрави!

0
krum_43 567 Точки

Тук условието на задачата е малко спорно.

Явно при втората команда(Flip) е необходимо да се промени вида на целия субстринг съответно към малки или големи символи в зависимост от втората част на командата,а не всеки символ по отделно.

0
krum_43 567 Точки

По принцип индекса за начало би трябвало да е по-малък от индекса за край.

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

0
nikolay19 0 Точки

evalata !

0