Софтуерно Инженерство
Loading...
ttitto avatar ttitto 1155 Точки

[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 Ще ми е интересно да видя и други решения.

 

13
C# OOP Basics 19/09/2014 21:55:49
vladislav_hadzhiyski avatar vladislav_hadzhiyski 66 Точки

Здравейте,

Реших да споделя какво измъдрих относно задачата BitArray. Реших я като сам си написах един BigInteger.

Решение

1
yavor2000 avatar yavor2000 114 Точки

Браво колега! И аз обичам да "пренаписвам топлата вода", т.е. да си пиша сам методи, които имаче ги има (като BigInteger).

Не съм направил цял нов BigInteger клас, но си измислих събирането на огромни числа и повдигането 2 на степен до 100 000.

Ето моето решение BitArray

п.п. пробвах твоето решение с 100-хилядния бит сетнат на 1, което трябва да върне десетично число с над 30000 цифри, но след 10 минути работа още няма резултат. Моето решение се справя с 10-хиляден бит за 1.26 сек, а с 100-хилядния за почти 2 минути. За сравнение .NETския BigInteger се справя за стотни :)

1
vladislav_hadzhiyski avatar vladislav_hadzhiyski 66 Точки

Поздравления за решението. Моето има нужда от доста оптимизации защото като цяло събирането на числа върви бавно а умножението разчита на събирането laughing и като искаш да ти събере число с 30000 цифри с някакво друго и увисва.

0