Пример #1
0
 public void SetNawAt(int index, NAW naw)
 {
     if (index < _length)
     {
         if (index == 0)
         {
             _first.Naw = naw;
         }
         else if (index == _length - 1)
         {
             _last.Naw = naw;
         }
         else
         {
             Link current = _first;
             for (int i = 0; i <= index; i++)
             {
                 if (i == index)
                 {
                     current.Naw = naw;
                 }
                 current = current.Next;
             }
         }
     } //invalid index
 }
Пример #2
0
        public void RemoveAllNaw(NAW naw)
        {
            Link current      = _first;
            Link previous     = null;
            Link previousLast = null;

            while (current != null)
            {
                if (current.Naw.CompareTo(naw) == 0)
                {
                    if (current == _first)
                    {
                        _first = current.Next;
                    }
                    else if (current == _last)
                    {
                        _last = previousLast;
                    }
                    previous.Next = current.Next;
                    _length--;
                }
                else
                {
                    previousLast = current;
                }
                previous = current;
                current  = current.Next;
            }
        }
Пример #3
0
        static void Main(string[] args)
        {
            NawQueueArray nawQueueArray = new NawQueueArray(4);

            NAW naw1 = new NAW("ABC", "straat", "schijndel");
            NAW naw2 = new NAW("YIJD", "dropstraat", "den bosch");
            NAW naw3 = new NAW("DEF", "kerkstraat", "amsterdam");
            NAW naw4 = new NAW("DEF", "dorpstraat", "amsterdam");
            NAW naw5 = new NAW("ABC", "kerkstraat", "amsterdam");

            nawQueueArray.Enqueue(naw1);
            nawQueueArray.Enqueue(naw2);
            nawQueueArray.Enqueue(naw3);
            nawQueueArray.Enqueue(naw4);
            nawQueueArray.Dequeue();

            nawQueueArray.Enqueue(naw5);
            nawQueueArray.Enqueue(naw1);

            var winkel = new Winkel(3, 8, 10);

            winkel.Run();

            System.Console.ReadKey();
        }
Пример #4
0
        //
        // Workshop methodes
        //

        public void InsertHead(NAW naw)
        {
            //throw new NotImplementedException();
            DoubleLink _current = First;
            DoubleLink _previous;

            First.Naw         = naw;
            First.Next        = _current;
            First.Previous    = null;
            _previous         = First;
            _current.Previous = _previous;


            if (_current.Next != null)
            {
                while (_current.Next != null)
                {
                    _previous         = _current;
                    _current          = _current.Next;
                    _current.Previous = _previous;
                }
            }
            else
            {
                Last = _current;
            }
        }
        public void BubbleSort()
        {
            int swapped;

            DoubleLink inner;
            DoubleLink outer = new DoubleLink();

            if (First == null)
            {
                return;
            }

            do
            {
                swapped = 0;
                inner   = First;

                while (inner.Next != outer && inner.Next != null)
                {
                    if (inner.Naw.CompareTo(inner.Next.Naw) > 0)
                    {
                        NAW n = inner.Naw;
                        inner.Naw      = inner.Next.Naw;
                        inner.Next.Naw = n;
                        swapped        = 1;
                    }
                    inner = inner.Next;
                }
                outer = inner;
            }while (swapped != 0);
        }
        public void NawArrayUnordered_Add_Valid_ShouldAddAtTheEnd()
        {
            const int capacity = 10;
            const int filled   = 5;

            WithUnordenedArray(capacity, filled, arr =>
            {
                var prevState = new NAW[filled];
                WithoutLogging(() =>
                {
                    for (int i = 0; i < filled; ++i)
                    {
                        prevState[i] = arr.Array[i];
                    }
                });

                WithoutCallingArrayMethods(() =>
                {
                    arr.Add(RandomNawGenerator.New());
                });

                for (int i = 0; i < filled; ++i)
                {
                    Assert.AreSame(prevState[i], arr.Array[i], "Jouw Add methode van NAWArrayUnordered doet ook iets met de elementen die al in de array zaten. Dit is niet de bedoeling");
                }
            });
        }
Пример #7
0
        public int FindBinary(NAW item)
        {
            int lowerBound = 0;
            int upperBound = _used - 1;
            int curIn;

            while (lowerBound <= upperBound)
            {
                curIn = (lowerBound + upperBound) / 2;
                if (_nawArray[curIn] == item)
                {
                    return(curIn); //found it
                }
                else if (lowerBound > upperBound)
                {
                    return(_used); //  can't find it
                }
                else
                {
                    if (_nawArray[curIn].CompareTo(item) == -1)
                    {
                        lowerBound = curIn + 1; // it's in upper half
                    }
                    else
                    {
                        upperBound = curIn - 1; // it's in lower half
                    }
                }
            }
            return(-1);
        }
Пример #8
0
        public int Find(NAW item)
        {
            if (_used > 0)
            {
                // kan item in array voorkomen
                if ((_nawArray[0].CompareTo(item) > 0))
                {
                    return(-1);
                }
                if ((_nawArray[_used - 1].CompareTo(item) < 0))
                {
                    return(-1);
                }
                else
                { // doorzoek array
                    for (int i = 0; i < _used; i++)
                    {
                        if (_nawArray[i].CompareTo(item) == 0)
                        {
                            return(i);
                        }
                        else if (_nawArray[i].CompareTo(item) >= 1)
                        {
                            return(-1);
                        }
                    }
                }
            }

            return(-1);
        }
Пример #9
0
        public NAW Find(string naam)
        {
            int newHash = naam.GetHashCode(); //Something something % modulo

            if (_array == null)
            {
                return(null);
            }

            int index         = Math.Abs(newHash % Size);
            int originalIndex = index;
            NAW foundItem     = null;

            while (foundItem == null)
            {
                if (_array[index] != null && !_array[index].IsDeleted)
                {
                    if (_array[index].Value.Naam.Equals(naam))
                    {
                        foundItem = _array[index].Value;
                    }
                }
                index++;
                if (index > _array.Size - 1)
                {
                    index = 0;
                }
                if (index == originalIndex)
                {
                    break;
                }
            }
            return(foundItem);
        }
Пример #10
0
        public int FindBinary(NAW item)
        {
            int lowerBound = 0;
            int upperBound = _used - 1;
            int currentInt;

            while (true)
            {
                currentInt = (lowerBound + upperBound) / 2;
                if (_nawArray[currentInt] == item)
                {
                    return(currentInt);
                }
                else if (lowerBound > upperBound)
                {
                    return(-1);
                }
                else
                {
                    if (_nawArray[currentInt].CompareTo(item) > 0)
                    {
                        lowerBound = currentInt + 1;
                    }
                    else
                    {
                        upperBound = currentInt - 1;
                    }
                }
            }
        }
        public int FindBinary(NAW item)
        {
            int lowerbound = 0;
            int upperbound = (_used - 1);
            int curInt;

            if (_used == 0)
            {
                return(-1);
            }

            while (true)
            {
                curInt = (upperbound + lowerbound) / 2;

                if (_nawArray[curInt].CompareTo(item) == 0)
                {
                    return(curInt);
                }
                else if (_nawArray[curInt].CompareTo(item) == -1)
                {
                    lowerbound = curInt + 1;
                }
                else if (_nawArray[curInt].CompareTo(item) == 1)
                {
                    upperbound = curInt - 1;
                }
            }
        }
Пример #12
0
 public virtual void Add(NAW item)
 {
     if (_used == _size)
     {
         throw new NawArrayOrderedOutOfBoundsException();
     }
     else if (_used == 0)
     {
         _nawArray[0] = item;
         _used++;
     }
     else
     {
         int i;
         for (i = 0; i < _used; i++)
         {
             if (_nawArray[i].CompareTo(item) == 1 || _nawArray[i].CompareTo(item) == 0)
             {
                 break;
             }
         }
         for (int j = _used; j > i; j--)
         {
             _nawArray[j] = _nawArray[j - 1];
         }
         _nawArray[i] = item;
         _used++;
     }
 }
Пример #13
0
 public static LogItem SetItem(int index, NAW oldNAW, NAW newNAW) => new LogItem
 {
     OldNaw1     = oldNAW,
     NewNaw1     = newNAW,
     Index1      = index,
     ArrayAction = ArrayAction.SET
 };
Пример #14
0
 public virtual void Add(NAW item)
 {
     if (_used < _size)
     {
         int _insertIndex;
         for (_insertIndex = 0; _insertIndex < _used; _insertIndex++)
         {
             if (item.CompareTo(_nawArray[_insertIndex]) == -1)
             {
                 for (int j = _used; j > _insertIndex; j--)
                 {
                     _nawArray[j] = _nawArray[j - 1];
                 }
                 _nawArray[_insertIndex] = item;
                 _used++;
                 return;
             }
         }
         _nawArray[_used] = item;
         _used++;
     }
     else
     {
         throw new NawArrayOrderedOutOfBoundsException();
     }
 }
Пример #15
0
        /// <summary>
        /// Tests the complexity of binary and linear search and outputs the results
        /// to standard output.
        /// </summary>
        public static void TestSearchPerformance()
        {
            Logger.Instance.Enabled = false;
            var sizes = new int[] { 100, 1000, 10000 };

            //Func<int, Action, double> time = (repetitions, fun) =>
            //{
            //    var watch = System.Diagnostics.Stopwatch.StartNew();
            //    for (var i = 0; i < repetitions; ++i)
            //        fun();
            //    watch.Stop();
            //    return watch.ElapsedMilliseconds;
            //};

            var tries           = 100;
            var celestialTeapot = new NAW("77777777777", "77777777777", "77777777777");

            Console.WriteLine("Size\tLinear (ms)\tBinary (ms)");
            for (var sizeIx = 0; sizeIx < sizes.Length; ++sizeIx)
            {
                var    size  = sizes[sizeIx];
                var    array = FilledArrayOfSize(size);
                double lin   = Time(tries, () => array.Find(celestialTeapot)) / 1000;
                double bin   = Time(tries, () => array.FindBinary(celestialTeapot)) / 1000;
                Console.WriteLine($"{sizes[sizeIx]}\t{lin}\t\t{bin}");
            }
        }
        public virtual NAW Delete(string key)
        {
            if (key == null)
            {
                return(null);
            }

            LogFileLink temp     = Head;
            LogFileLink previous = null;

            while (temp != null)
            {
                if (temp.Key.Equals(key))
                {
                    if (temp == Head)
                    {
                        Head = temp.Next;
                    }
                    else
                    {
                        previous.Next = temp.Next;
                    }


                    NAW target = temp.Value;
                    temp.Next = null;
                    return(target);
                }

                previous = temp;
                temp     = temp.Next;
            }
            return(null);
        }
Пример #17
0
        public void AddBinary(NAW item)
        {
            int lowerBound = 0;
            int upperBound = _used - 1;
            int currentInt;

            while (true)
            {
                currentInt = (lowerBound + upperBound) / 2;
                if (_nawArray[currentInt].CompareTo(item) > 0 || _nawArray[currentInt + 1].CompareTo(item) < 0)
                {
                    for (int k = _used; k > currentInt; k--)
                    {
                        _nawArray[k] = _nawArray[k - 1];
                    }
                    _nawArray[currentInt] = item;
                    break;
                }
                else
                {
                    if (_nawArray[currentInt].CompareTo(item) < 0)
                    {
                        lowerBound = currentInt + 1;
                    }
                    else
                    {
                        upperBound = currentInt - 1;
                    }
                }
            }
        }
Пример #18
0
        public void NawHashTable_Find_ShouldFindFirstOccurences()
        {
            // Arrange
            NawHashTable hashtable = new NawHashTable(10);

            hashtable.Add(naw0);
            hashtable.Add(naw1);
            hashtable.Add(naw2);
            hashtable.Add(naw3);
            hashtable.Add(naw4);
            hashtable.Add(naw5);
            hashtable.Add(naw6);
            hashtable.Add(naw7);
            hashtable.Add(naw8);
            hashtable.Add(naw9);
            Logger.Instance.ClearLog();

            // Act
            NAW nawFound4 = hashtable.Find(naw4.Naam);
            NAW nawFound5 = hashtable.Find(naw5.Naam);
            NAW nawFound6 = hashtable.Find(naw6.Naam);
            NAW nawFound7 = hashtable.Find(naw7.Naam);

            // Assert
            Assert.IsTrue(nawFound4 != null && nawFound5 != null && nawFound6 != null && nawFound7 != null, "Een of meerdere elementen zijn onterecht niet gevonden.");
            Assert.IsTrue(nawFound4.CompareTo(naw0) == 0, "Voor {0} is niet de eerste gevonden.", naw0.Naam);
            Assert.IsTrue(nawFound5.CompareTo(naw1) == 0, "Voor {0} is niet de eerste gevonden.", naw0.Naam);
            Assert.IsTrue(nawFound6.CompareTo(naw2) == 0, "Voor {0} is niet de eerste gevonden.", naw0.Naam);
            Assert.IsTrue(nawFound7.CompareTo(naw3) == 0, "Voor {0} is niet de eerste gevonden.", naw0.Naam);
        }
Пример #19
0
        public int FindBinary(NAW item)
        {
            int lowerBound = 0;
            int upperBound = _used - 1;
            int curIn;

            if (upperBound != -1)
            {
                while (true)
                {
                    curIn = (lowerBound + upperBound) / 2;
                    if (_nawArray[curIn] == item)
                    {
                        return(curIn);
                    }
                    else
                    {
                        if (_nawArray[curIn].CompareTo(item) == -1)
                        {
                            lowerBound = curIn + 1;
                        }
                        else
                        {
                            upperBound = curIn - 1;
                        }
                    }
                }
            }
            else
            {
                return(-1);
            }
        }
Пример #20
0
        public void AddBinary(NAW item)
        {
            int lowerBound = 0;
            int upperBound = _used - 1;
            int curIn;

            if (upperBound != -1)
            {
                while (true)
                {
                    curIn = (lowerBound + upperBound) / 2;
                    if (lowerBound == upperBound)
                    {
                        for (int i = curIn; i <= _used; i++)
                        {
                            NAW temp;
                            NAW curr = _nawArray[i];
                            NAW next = _nawArray[i + 1];
                            temp = next;
                            next = curr;
                            curr = temp;
                        }
                    }
                    else if (_nawArray[curIn].CompareTo(item) == -1)
                    {
                        lowerBound = curIn + 1;
                    }
                    else
                    {
                        upperBound = curIn - 1;
                    }
                }
            }
        }
Пример #21
0
 public NAWViewModel()
 {
     _naw = new NAW {
         Name = "Unknown", Address = "Unknown", City = "Unknown", Telephone = -1
     };
     SaveCommand = new RelayCommand(Save);
 }
Пример #22
0
        public void NawArrayUnordered_InsertionSort_EightAndFourSwapped_ShouldNotSetWhenNotSwapped()
        {
            // Arrange
            NAW[] testSet;
            var   expectedLength = 10;
            var   array          = ArrayExtensions.InitializeTestSubject(new NawArrayUnordered(expectedLength), expectedLength, out testSet);
            var   newNaw         = RandomNawGenerator.New();

            testSet[0].Woonplaats = "0";
            testSet[1].Woonplaats = "1";
            testSet[2].Woonplaats = "2";
            testSet[3].Woonplaats = "3";
            testSet[4].Woonplaats = "8";
            testSet[5].Woonplaats = "5";
            testSet[6].Woonplaats = "6";
            testSet[7].Woonplaats = "7";
            testSet[8].Woonplaats = "4";
            testSet[9].Woonplaats = "9";

            // Act
            Alg1_Practicum_Utils.Globals.Alg1NawArrayMethodCalled = false;

            array.InsertionSort();

            // Assert
            Assert.IsFalse(Alg1_Practicum_Utils.Globals.Alg1NawArrayMethodCalled, "\n\nEr wordt een methode van Alg1NawArray gebruikt!\n\n");

            Assert.IsTrue(array.CheckIsGesorteerd(), "De array is niet gesorteerd na de InsertionSort.");

            int lowerBound = 4, upperBound = 8;

            NAW toMoveUp        = testSet[lowerBound];
            var toMoveUpSetters = (from li in Logger.Instance.LogItems
                                   where li.NewNaw1 == toMoveUp && li.ArrayAction == ArrayAction.SET
                                   orderby li.Index1
                                   select li).ToArray();

            // This one bubbles up slowly.
            for (int i = lowerBound + 1; i <= upperBound; i++)
            {
                Assert.IsTrue(toMoveUpSetters[i - lowerBound - 1].Index1 == i, "Er zouden 4 items verplaatst moeten zijn om ruimte te maken in het geordende deel.");
            }

            NAW toBeInsertedDown        = testSet[upperBound];
            var toBeInsertedDownSetters = (from li in Logger.Instance.LogItems
                                           where li.NewNaw1 == toBeInsertedDown && li.ArrayAction == ArrayAction.SET
                                           orderby li.Index1
                                           select li).ToArray();

            // This one moves down in an insertion way.
            Assert.AreEqual(1, toBeInsertedDownSetters.Count(), "Meerdere items zijn geïnsert in de sortering, dit had er 1 moeten zijn.");
            Assert.AreEqual(lowerBound, toBeInsertedDownSetters.First().Index1, "Item met woonplaats 4 zou op de 4e index geïnsert moeten zijn.");


            // All setters must be in between the bounds.
            Assert.IsTrue(Logger.Instance.LogItems.Where(li => li.ArrayAction == ArrayAction.SET).All(li => li.Index1 >= lowerBound && li.Index1 <= upperBound)
                          , "Je hebt items gezet waarbij de oude index gelijk was aan de nieuwe, dit is niet nodig.");
        }
Пример #23
0
        public void InsertionSortNawArray_InsertionSort_EightAndFourSwapped_ShouldNotSetWhenNotSwapped()
        {
            // Arrange
            NAW[] testSet;
            var   expectedLength = 10;
            var   array          = ArrayExtensions.InitializeTestSubject(new NawArrayUnordered(expectedLength), expectedLength, out testSet);
            var   newNaw         = RandomNawGenerator.New();

            testSet[0].Woonplaats = "0";
            testSet[1].Woonplaats = "1";
            testSet[2].Woonplaats = "2";
            testSet[3].Woonplaats = "3";
            testSet[4].Woonplaats = "8";
            testSet[5].Woonplaats = "5";
            testSet[6].Woonplaats = "6";
            testSet[7].Woonplaats = "7";
            testSet[8].Woonplaats = "4";
            testSet[9].Woonplaats = "9";

            // Act
            Alg1_Practicum_Utils.Globals.Alg1NawArrayMethodCalled = false;

            array.InsertionSort();

            // Assert
            Assert.IsFalse(Alg1_Practicum_Utils.Globals.Alg1NawArrayMethodCalled, "\n\nEr wordt een methode van Alg1NawArray gebruikt!\n\n");

            Assert.IsTrue(array.CheckIsGesorteerd());

            int lowerBound = 4, upperBound = 8;

            NAW toMoveUp        = testSet[lowerBound];
            var toMoveUpSetters = (from li in Logger.Instance.LogItems
                                   where li.NewNaw1 == toMoveUp && li.ArrayAction == ArrayAction.SET
                                   orderby li.Index1
                                   select li).ToArray();

            // This one bubbles up slowly.
            for (int i = lowerBound + 1; i <= upperBound; i++)
            {
                Assert.IsTrue(toMoveUpSetters[i - lowerBound - 1].Index1 == i);
            }

            NAW toBeInsertedDown        = testSet[upperBound];
            var toBeInsertedDownSetters = (from li in Logger.Instance.LogItems
                                           where li.NewNaw1 == toBeInsertedDown && li.ArrayAction == ArrayAction.SET
                                           orderby li.Index1
                                           select li).ToArray();

            // This one moves down in an insertion way.
            Assert.AreEqual(1, toBeInsertedDownSetters.Count());
            Assert.AreEqual(lowerBound, toBeInsertedDownSetters.First().Index1);


            // All setters must be in between the bounds.
            Assert.IsTrue(Logger.Instance.LogItems.Where(li => li.ArrayAction == ArrayAction.SET).All(li => li.Index1 >= lowerBound && li.Index1 <= upperBound));
        }
Пример #24
0
 public override bool Remove(NAW naw)
 {
     if (base.Remove(naw))
     {
         AddOperation(Operation.REMOVE, naw);
         return(true);
     }
     return(false);
 }
Пример #25
0
 public override bool Remove(NAW item)
 {
     if (!DoRemove(item))
     {
         return(false);
     }
     AddOperation(Operation.Remove, item);
     return(true);
 }
Пример #26
0
        static void Main(string[] args)
        {
            // voorbeeld uitprobeercode

            var nieuwArray = new NawArrayUnordered(20);

            nieuwArray.Add(new NAW("Persoon1", "Adres1", "Woonplaats1"));
            var persoon = new NAW("Persoon 1", "Adres 5", "Woonplaats 1");
            int index   = nieuwArray.FindNaam(persoon.Naam);
        }
Пример #27
0
        private SortedDictionary <int, NawQueueLinkedList> _priorityQueue = new SortedDictionary <int, NawQueueLinkedList>();  // <= vervang hier Object met een geschikte combinatie van een .net klasse en jouw eigen NawQueueLinkedList Klasse
        public void Enqueue(int priority, NAW naw)
        {
            if (!_priorityQueue.ContainsKey(priority))
            {
                _priorityQueue.Add(priority, new NawQueueLinkedList());
            }
            _count++;

            _priorityQueue[priority].Enqueue(naw);
        }
Пример #28
0
        public void Insert(string key, NAW value)
        {
            if (key.Equals(null))
            {
                throw new ArgumentNullException();
            }

            logFiles[KeyToIndex(key)].Insert(key, value);
            count++;
        }
Пример #29
0
        public virtual void Insert(string key, NAW value)
        {
            if (key == null)
            {
                throw new ArgumentNullException();
            }
            LogFileLink temp = new LogFileLink(key, value, Head);

            Head = temp;
        }
Пример #30
0
        private bool DoRemove(NAW naw)
        {
            var index = Find(naw);

            if (index < 0)
            {
                return(false);
            }
            RemoveAtIndex(index);
            return(true);
        }