[Useful Info] C# Basics Exam - Лесен начин да не ни дава "Лимит време" и "Лимит памет"
Колеги искам да споделя един "hint" относно задачите със вложени цикли. (№4)
Ако се получава така, че програмата ви дава правилни резултати, но Judge-a ви дава "лимит време" и/или "лимит памет" и не се сещате за друго решение или нямате време да го измислите има сравнително лесен начин да използвате вашето работещо решение.
Просто го напишете на C++.
Явно C++ работи по-бързо от C# и използва по-малко памет и по този начин ако прехвърляте лимитите в разумни граници мисля, че е най-лесно просто да използваме опцията в Judge-a да предадем код на C++.
Да, но аз не съм писал никога на C++! - Няма значение, както ни е казвано хиляда пъти тук се учим първо на програмни принципи и практики и след това на определени езици и тн.
Какво ни трябва:
1. Една добра книга за C++ (примерно ТАЗИ )
Просто за да видим разликите в синтаксиса, въобще не ни трябва да задълбаваме особенно на изпита.
Използваме search опцията в нашата програма за да пестим време.
2. Компилатор ( ТОЗИ е доста лесен за употреба, буквално Next Next Finish )
Реално и компилатор не ни трябва, но judge-a има малък прозорец и на мен ми е по лесно да си напиша решението в компилатора и после да го копирам.
Ето и един пример. Задача №4 Poker Straight от C# Basics 28 April
Докарах я да ми вади правилни резултати, но ми дава лимит време. Пробрах доста неща, нищо не помогна. Даже помолих за помощ колегите във форума и те естествено ми преложиха различни варианти за решението на задачата, но ми е трудно да разбера логиката на друг човек, а на изпита се съмнявам, че mihayloff14 или nikola.m.nikolov (или някой друг напреднал колега) ще са до мен да ударят едно рамо :) Истината е, че просто нямам време(мързел?) да се уча да решавам този тип задачи по-друг начин, определено ще положа усилия в тази насока след изпита но 1-2 дена мисля, че за мен са малко за да си променя "мисленето" относно определени задачи.
Poker Straight C# Memory: 8.13 MB | Time: 0.452s | Points 0/100
Poker Straight C++ Memory: 2.83 MB | Time: 0.122 s | Points 100/100
За мен има само една съществена разлика и тя е, че в C++ всички променливи трябва да бъдат декларирани и инициализирани преди употребата им. Judge системата даже си казва.
Вярно е, че този тип решения са "тромави", но на 25-ти нямаме изпит по КПК :-)
ENJOY!
Ако говориш за keyword-а "unsafe" в C# лично аз не знам дали Judge-a я подържа и дали ако я подържа същия код няма да ми гърми с лимит време, и доколкото знам unsafe се ползва за pointers.
А имаики предвид че C++ се води unsafe language явно Judge-a го подържа или ти имаш предвид дали може да се пише unsafe код на C#?
Не съм напреднал и определено не съм аз човека който може да ти отговори, просто питам за обща култура :)
Да, точно за C# имам предвид и точно заради указателите, тъй като те гарантират до някаква степен бързодействие :)
Аха доколкото разбирам искаш да кажеш, че примерно ако знам как да достъпя елементите на един масив с pointers тази програма на C# няма да ми гърми? Или горовиш принципно а не за конкректния тип задачи :)