Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият.
Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание.
Използваме бисквитки и за измерване на маркетинговите ни усилия.
Ами с юнит тестове трябва да стане (поредното нещо, което съм проспал в условието),
сега ще напиша и ще ги кача в гитхъб.
Поздрави!
Тестовете са готови, може да ги видиш тук:
https://github.com/vdonchev/LinearDataStructures-Lists-Homework/blob/master/03.LongestSubsequence.Tests/LongestSubsequenceTests.cs
Относно това, как се пишат UNIT тестове, може да научиш повече от лекциите на Наско и Иван от курса по качествен програмен код:
https://softuni.bg/trainings/1286/high-quality-code-december-2015 (Компонентно тестване).
С две думи, прави се нов проект от тип Unit Test Project. Реферира се проекта чиито методи и класове ще тестваш и се пишат тест методи, които тестват функционалността.
Поздрави!
Не е нужно да се правят Unit тестове макар, че е силно препорачително. В условието има да се напише метод и после програма с която да тестваме. Реално можеш да тестваш метода в main(), резултатът е същия.
Съгласен съм с теб :)
Но не пречи и с методчета в мейна да се направи
Не ми харесва четвъртата ти задача направил си алгоритъма със сложност O(n*n) експоненциална сложност, а би могло да е линейна O(2*n)
Варианти много, сетих се за първия и го направих.
Сподели твоето решение, да погледна как си подходил.
Поздрави
Получавам линейна сложност около 5n, прав си че има различни варианти, но нали трябва да избягваме експоненциалните алгоритми, това повтарят постоянно на лекциите.
static void Main(string[] args)
{
Console.Write("Enter your string:\n");
String str1 = Console.ReadLine();
String[] strNums = str1.Split(' ');
int[] nums = Array.ConvertAll<string, int>(strNums, int.Parse);
int biggestNum = 0;
int counter1 = 0;
foreach(int item in nums)
{
if(item > biggestNum)
{
biggestNum = item;
}
counter1++;
}
bool[] numbers = new bool[biggestNum+1]; //false default;flase means even or 0
foreach (int item in nums)
{
if(numbers[item]==false)
{
numbers[item] = true;
}
else
{
numbers[item] = false;
}
}
foreach (int item in nums)
{
if (numbers[item] != true)
{
Console.Write(item + " ");
}
}
//keep console opened
Console.ReadLine();
}
Браво, интересно решение. Ще помисля и аз за нещо по оптимизирано и ако ми хрумне ще постна тук.
Поздрави
За да бъдем коректни - O(n^2) е квадратична сложност, не експоненциална. Също така при смятане на асимптотична сложност константите се игнорират - О(n) е единственото, което има смисъл, дали е 2n или 3n е без значение. Идеята на такъв тип анализ е да се направи бърза преценка какво е поведението на даден алгоритъм.
Оценката какви константи влияят върху бързодействието се прави въз основа на конкретни преположения с какви входни данни се работи. Има например случаи, при които алгоритъм с константна сложност е по-бавен от такъв с линейна.