09. Kamino Factory-with Dictionary And Regex
Здравейте,
преди да завърша Фундаментал модула трябваше да пробвам дали е възможно да се опрости решението на Kamino Factory. Винаги ми се е струвало малко странно една такава задача с толкова кратко и ясно изсикване (да се намери ДНК с най-дългата секвенция от 1, ако две ДНК секвенции от 1 са с еднаква дължина да се вземе тази ДНК с най-ляв индекс на съответната секвенция, а ако и те вече са еднакви да се вземе тази ДНК с най-голяма сума) да достига до 100 и повече реда код. Дори съм виждала как самият автор на задачата я решава, като и при него достигна над 100 реда.
Опитвам се да приложа друг подход:
- чрез един regex намирам всички секвенции от 1;
-след като forech() през MatchCollection аз ще намеря най-дългата секвенция, както и нейния startIndex;
-ще пазя в речник дължината на най-дългата секвенция от 1, нейния startIndex и максималната сума на цялата текуща ДНК;
-след като получа командата "Clone them!" аз ще сортирам речника по горните изисквания -първо по дължината на максималната секвенция, после по най-малък StartIndex (най-ляв) и накрая по най-голяма сума на цялата ДНК;
-от всичко, което съм сортирала аз ще взема само първия речник.
https://pastebin.com/SzJpwxgE - 30/100 ми е резултата, като получавам коректно аутпутите при дадените инпути.
Моля за помощ, като не изключвам възможността просто Judge да не ми харесва кода.
https://softuni.bg/trainings/resources/officedocument/49571/arrays-exercise-csharp-fundamentals-may-2020/2830
https://judge.softuni.bg/Contests/Compete/Index/1206#8
Благодаря Ви отново за намирането на грешката ми. Прав сте, че не трябва да се принтира StartIndex на най-добрата секвенция от 1, а самата поредност на ДНК, както се подава от инпута. Разреших този проблем с добавянето на един CounterDNK, като му задавам стойност 0 извън while цикъла и при въвеждане на всяка една ДНК го увеличавам с 1. Съответно и него запаметявам в речник. При сортировката на речниците, както и да ги сортирам този counter ще си запази числото, т.е. аз ще зная коя по поредност( на кой индекс) е била bestDNK.
Така вече Judge е съгласен с мен и ми дава 100/100 https://pastebin.com/SzJpwxgE
И благодаря, че ми напомняте за класовете. Зная, че са много важни, питат за тях на интервюта и, че ще са ни от голяма помощ за задачи с по-голяма сложност. Умишлени малко ги избягвах до този момент, защото самият Фундаментал модул, изпитите и подготовката за изпитите е насочена към масиви, листове, речници и регулярни изрази. Опитвах се до този момент максимално да усвоя работата с всички тях. В Advanced модула, когато наблегна на обекти и класове, отново ще се върна на вашето решение на KaminoFactory с помощен клас и на една задача от More Exercices Dictionary- "Dragon Army", за която открих и видео материал на решението с обекти.
Още веднъж благодаря и извинявайте, че толкова много Ви отнемам от времето.
Хубав уикенд!
Поздрави!
Ели
Това решение е добро,но изисква добри познания относно дефиниране и използване на класове,което не е обект на този модул.