Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият.
Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание.
Използваме бисквитки и за измерване на маркетинговите ни усилия.
ОК, сега боря Inferno Infinity и ще видим :)
Е да де, ама как да си ъплоудна файла, при условие, че максималната големина на zip файла е 16KB, а архивирания ми файл е 40KB. Възможно е файла да е толкова голям файла понеже, докато писах 10 задача, гледах в същото време да правя и 12-та...
Опитай да не архивираш bin и obj папките от папката на проекта.
Това е ясно. Винаги така архивирам. На 10 задача, позволената големина на файла е 345.55KB и там нямам проблеми.
Ами, виж кой файл или папка гълта толкова ресурси и ако не ти трябва го махни или влез в него и виж какво не ти трябва вътре. При мен zip-а е 9.8kb, не е като да съм спестил код, а на 10 задача е 8.8kb, което ме навежда на мисълта, че там judge админите са направили някаква грешка.
Решението на 10 задача при теб включва ли и решението на 12? Понеже моето го включва и отделно имам много класове за пръжията, за gems, interfaces, factories, класове за всяка команда, класове за четене от и писане по конзолата, енумерации и от там големия размер на файла....
Ами, 12 задача не съм я решавал, защото това което се искаше го бях направил без inputreader и outputwriter и command factory. Тоест решението на 10 почти нямаше нужда от рефакторинг. Рефакторинга си е за теб, той не сe оценява в judge. Какво значи двете решения да са заедно. Предполагам, че така ще имат доста дублирана data, ако си направил рефакторинг не ти трябва решение без рефакторинг. Рефакторинга е далеч по-добре.
Ако дадеш линк, може да ти кажа нещо по-конкретно.
10- та задача мога да е реша само с един клас Weapon и толкоз, но реших просто, че ще е по - добре да реша задачата, като използвам всичко научено до сега (не казвам, че е най правилното решение), като още в началото ги вкарам всите тези неща. Да рефакторинга не се оценява, но задачата, но това не ти пречи да ъплоуднеш рефакторираното решение в Judge.
https://onedrive.live.com/embed?cid=0215B22FCDC531A6&resid=215B22FCDC531A6%21493&authkey=AIdlyxRdKy1NGNI
Ето го моето решение на 10 задача + рефакторинг. Ако намериш папка без, която може всичко да работи перфектно - ще е направо супер. Пак казвам решението може и да не е най - доброто заради много класове за оръжия и гемс.
Това което получавам като архиви е:
Пaпка Engine - 2kb , Пaпка Enum - 2kb, Пaпка Factories - 2kb, Пaпка Interfaces - 13kb, Пaпка Models - 17kb, Пaпка UI - 1kb.
Предлагам ти следните стъпки:
1. В папка interfaces махни всичко без IGem, и без това другите са празни. В папка Weapons оставяш само IWeapon.
2.В папка Models > Jewelry остави само Gem, Ruby, Emerald, Amethyst. Всичките производни на Ruby, Emerald, AMethyst се получават с 1 пропърти от тип Clarity което се инжектва в IGem.
Сега Gem наследява IGem. Другите наследяват него.
Правиш същото и за папка Weapons. Axe, Sword, Knife наследяват Weapon. Другите класове не ти трябват. В Weapon инжектираш property Rarity.
Дотук при мен папката ти е вече само? 19 kb.
По-нататък направеното дотук ще ти съкрати кода на GemFactory и WeaponFactory, 1 кб по-малко, стават 18.
3. От Enums можеш да махнеш Gems, Weapons, Commands, Mulitplyier. Без тях вече си под 16 kb. Защо да ги махнеш? Ами, имена на класове не съм виждал да се използват в enum. Логиката по създаване на обекти може да се имплементира или с Reflection или директно използвай стрингове.
Като цяло refactoringa не означава така да си разцепиш класовете, че за всяко нещо да имаш нов клас. При теб различните класове могат да се заменят с propеrty в 1 клас.
Нещо допълнително кето забелязах, е че използваш прекалено много логика в weapon класа. AddGem, RеmoveGem и SwapGems не би трябвало да преизчисляват други prоperty-та. Ако спестиш от тази логика, можеш да спестиш още 1 kb.
Като част от рефакторинга е да се направи отделен клас за изпъление на командите, който да си ги създава и да извиква техен метод за изпълнение. Може и отделен метод който да парсва инпута, commandInterpreter. Това обаче ще увеличи паметта.
Използването на списъци не е препоръчително. Когато имаш уникални стойности използвай Hashset или речник за директен достъп по стойността(препоръчително). О(1) за достъп. Казвам това защото предполагам, че на изпита ще има bottleneck codeparts които ще трябва да се документират и отстраняват. Тоест ако работим с готов отчасти код, което казаха в началото, че е вероятно, за да правим рефакторинг, може да има капани в него.
Между другото накрая на Run на Engine печаташ всички оръжия, но това в действителност е грешка в условието. Като погледнеш нулевите тестове, ще видиш, че не се печатат.
Поздрави.