Loading...
PetarNeshkov5360 avatar 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}".
    • If not, prints: "Substring not found!"
  • 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

Input

Output

abcdefghijklmnopqrstuvwxyz

Slice>>>2>>>6

Flip>>>Upper>>>3>>>14

Flip>>>Lower>>>5>>>7

Contains>>>def

Contains>>>deF

Generate

abghijklmnopqrstuvwxyz

abgHIJKLMNOPQRstuvwxyz

abgHIjkLMNOPQRstuvwxyz

Substring not found!

Substring not found!

Your activation key is: abgHIjkLMNOPQRstuvwxyz

Comments

  1. Slice>>2>>6

abcdefghijklmnopqrstuvwxyz becomes abghijklmnopqrstuvwxyz

  1. Flip>>>Upper>>>3>>>14

abghijklmnopqrstuvwxyz becomes abgHIJKLMNOPQRstuvwxyz

  1. Flip>>>Lower>>>5>>>7

abgHIJKLMNOPQRstuvwxyz becomes abgHIjkLMNOPQRstuvwxyz

  1. Contains>>>def

abgHIjkLMNOPQRstuvwxyz does not contain def

  1. Contains>>>deF

abgHIjkLMNOPQRstuvwxyz does not contain deF

The final activation key is abgHIjkLMNOPQRstuvwxyz

Input

Output

134softsf5ftuni2020rockz42

Slice>>>3>>>7

Contains>>>-rock

Contains>>>-uni-

Contains>>>-rocks

Flip>>>Upper>>>2>>>8

Flip>>>Lower>>>5>>>11

Generate

134sf5ftuni2020rockz42

Substring not found!

Substring not found!

Substring not found!

134SF5FTuni2020rockz42

134SF5ftuni2020rockz42

Your activation key is: 134SF5ftuni2020rockz42

Тагове:
0
C# Fundamentals 28/10/2020 00:47:58
Elena123456 avatar Elena123456 235 Точки
Best Answer

@ PetarNeshkov5360 ,

споделям две решение на задачата, като в първото съм използвала 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, което е и правилния резултат.

Поздрави!

0
yanchev.ilian avatar yanchev.ilian 24 Точки

Привет,

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

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

  1. if (validEndIndex >= validStartIndex)

  2.                     {

  3.                         int lengthToRemove = validEndIndex - validStartIndex;

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

  5.                     }

 

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

 

Поздрави!

0
krum_43 avatar krum_43 756 Точки

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

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

0
krum_43 avatar krum_43 756 Точки

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

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

0
denis.argatski avatar denis.argatski 25 Точки

Здравей колега пробвай да решиш задачата използвайки StringBuilder,Append,Insert и Remove при командите  Flip и Slice.

 

0
krum_43 avatar krum_43 756 Точки

 

Според мен при тази задача има сгрешени тестове.

Елена е качила код ,който минава всички тестова,но аз с подобна лoгиkа се завъртях на 57/100 и не мога да си открия грешките.

Ето моето решение:

https://pastebin.com/EJKemfa0

 

0
08/01/2022 13:49:37
aZZaro avatar aZZaro 1 Точки

Колега,

И аз получих същия резултат, но при преглед на условието установих, че при изход примерен "Veselin contains lin." не трябва да има точка накрая. След това изкара 100/100.

1
Parunowaa avatar Parunowaa 3 Точки

Здравейте!

Ето и едно малко по-различно решение на задачата, което също дава 100/100:

https://pastebin.com/xC63pEFj

 

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