Loading...
ttitto avatar ttitto 1153 Точки

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