Loading...
KirilManin avatar KirilManin 7 Точки

[Judge] C# Basics - Nine Digit Magic Numbers и други магии в Judge системата

Здравейте колеги,

Предполагам, че вече някои са започнали да се готвят за изпита по C# основи, който иде на 22 Август. И аз така. Днес за първи път имах досег с Judge системата, опитвайки се да проверя решенията, които измъдрих за първия вариант от темите за подготовка (тази, която започва с Joro – The Football Player.) Първа задача добре, втора добре, трета – и тя сработи. Стигнах до магическите числа – Nine Digit Magic Numbers (зад. 4) и Bit Inverter (зад. 5). И тук започнаха моите проблеми.

Проблем 1. В задача 4 е даден пример за output, при зададени първоначално сума от 27 и разлика 46.

Според условието output-a би следвало да бъде следните три числа:

125171217

131177223

221267313

Моят алгоритъм обаче намира много повече решения от тези 3. (Под решения имам предвид числа, които отговарят на зададените рестрикции в условието). Само за пример ще дам следните три числа (при зададени същите параметри за сума = 27 и разлика = 46):

125171217 (125 < 171 < 217 ; 1 + 2 +5 + 1 + 7 + 1 + 2 + 1 + 7 = 27; 171 – 125 = 46; 217 – 171 = 46)

164210253

215261307

При моя алгоритъм, обаче, получвам още 17 други решения, които удовлетворяват условието на задачата преди да стигна до последното решение, което е дадено в примера (а именно – 221267313). И програмата продължава да “бълва“ още... :)  

Виждам, че много колеги са изкарали максимален брой точки на тази задача, при мен обаче дава лимит време (0.451 при разрешени 0.30), тъй като просто обхождам голям масив.

Питанката ми е – това грешка в условието ли е или грешката е в моя телевизор? :) Ако наистина, грешката е моя, връщам се пак към кода да търся грешки и/или начини как да го оптимизирам...

Проблем 2. Задача 5 – Bit Inverter. Тук мистерията става още по-дълбока. :) Отново по някакъв си мой начин/алгоритъм (не претендирам за красив код :)), но успявам да получа искания output по зададен вход. Примерно:

Input:

2 – брой числа

11 – стъпка

45 – число #1

87 – число #2

Output:

173 - ново число #1

71 - ново число #2

Другият пример даден в условието също сработи. Judge системата, обаче, казва 13/100 (сиреч само 2 теста са успешни – zero тестовете също минават). Останалите тестове са или Runtime Error или Incorrect Answer. Тук започнах да чародействам – сменях вида на променливите – int-ове, byte-ове и т.н, правих заклинания, пих една студена вода – навън заваля дъжд, но Judgе-a не помръдна и с един тест напред...

Та, втората ми питанка е – възможно ли е да получвам правилен output, но тъй като Judge системата има собствен “начин на мислене” и очаква конкретен алгоритъм, да дава проблем и да смята задачата за нерешена ако не намери този алгоритъм при “събмитване“ на решението?

Ако някой от колегите, които имат повече опит с Judgе системата (или някой от SoftUni Team), могат да хвърлят малко светлина, ще бъда много благодарен... :)

Мерси предварително!   

 

Поздрави,

К

П.С. Ако е необходимо, кодът който съм използвал за двете задачи също веднага мога да го пост-на... :)

Тагове:
0
Programming Basics
Anonymous:
Duplicate topic -> https://softuni.bg/forum/questions/details/810 and https://softuni.bg/forum/questions/details/1242
gstoyanov90 avatar gstoyanov90 99 Точки

По втория въпрос:

Сигурен съм, че Judge системата не очаква точно определен код. Интересува се изхода ти да е 1 към 1 с това, което е зададено като очакван изход на задачата и времето за което върви задачата да е под определеното в условието време. Как си го постигнал си е твоя работа (от този примерен изпит имам 3 решени задачи, и трите са с решение различно от авторското и не съм имал проблеми :) )

 

По първия:

Не съм я написал конкретно тази задача, но честно казано докато я мислех и аз открих още варианти. Мисля че не я премислих добре, щото я разгледах за 10-тина минути. 

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