[Homework] OOP - Static Members - Септември 2014
Ето и домашното от втората тема:
Paths Понеже първите три задачи са свързани съм ги направил в един проект. Индексаторът при Path3D класът може да се избегне и да се работи през списъка Paths, но исках да го упражня
Geometry (Namespaces) - малко скучна задача, която се решава само с два шорткъта на VS: десен бутон->d->d върху бащината папка в solution explorer (създава нова папка в избраната) и другия шорткът alt+shift+c -създава нов клас в текущата папка, като namespace-a се взима от структурата на директориите
BitArray - Много интересна задача! Тънкостта е да се прецени какъв числов тип да се използва при превръщането на BitArray в число.
HTML Dispatcher - Привидно лесна задача, но като се стигне до overload на операторите става ужас. Как да се овърлодне оператора така че да важи за класа ElementBuilder и същевременно да се получава умножения стринг на елемента? Справих се чрез implicit conversion operator Ще ми е интересно да видя и други решения.
Браво колега! И аз обичам да "пренаписвам топлата вода", т.е. да си пиша сам методи, които имаче ги има (като BigInteger).
Не съм направил цял нов BigInteger клас, но си измислих събирането на огромни числа и повдигането 2 на степен до 100 000.
Ето моето решение BitArray
п.п. пробвах твоето решение с 100-хилядния бит сетнат на 1, което трябва да върне десетично число с над 30000 цифри, но след 10 минути работа още няма резултат. Моето решение се справя с 10-хиляден бит за 1.26 сек, а с 100-хилядния за почти 2 минути. За сравнение .NETския BigInteger се справя за стотни :)
Поздравления за решението. Моето има нужда от доста оптимизации защото като цяло събирането на числа върви бавно а умножението разчита на събирането и като искаш да ти събере число с 30000 цифри с някакво друго и увисва.