예제 #1
0
        public void ShiftingListTest()
        {
            const int    maxCount     = 2;
            ShiftingList shiftingList = new ShiftingList(maxCount);

            Assert.AreEqual(shiftingList.MaxCount, maxCount);
        }
예제 #2
0
        public void AddTest()
        {
            const int    maxCount     = 2;
            const int    entriesToAdd = 6;
            ShiftingList shiftingList = new ShiftingList(maxCount);

            for (int i = 0; i < entriesToAdd; i++)
            {
                shiftingList.Add($"Test{i}");
            }

            Assert.AreEqual(shiftingList.Count, maxCount);

            for (int i = 0; i < shiftingList.Count; i++)
            {
                Assert.AreEqual(shiftingList[i], $"Test{entriesToAdd - i - 1}");
            }
        }
예제 #3
0
        public void ReplaceTest()
        {
            const int    maxCount       = 6;
            const int    indexToReplace = 2;
            ShiftingList shiftingList   = new ShiftingList(maxCount);

            for (int i = 0; i < maxCount; i++)
            {
                shiftingList.Add($"Test{i}");
            }

            for (int i = 0; i < maxCount; i++)
            {
                if (i == indexToReplace)
                {
                    shiftingList.Replace("Replaced", indexToReplace);
                }
            }

            Assert.AreEqual(shiftingList.Count, maxCount);

            Assert.AreEqual(shiftingList[indexToReplace], "Replaced");
        }
예제 #4
0
        public void RemoveFromEndTest()
        {
            const int    maxCount        = 6;
            const int    entriesToRemove = 2;
            ShiftingList shiftingList    = new ShiftingList(maxCount);

            for (int i = 0; i < maxCount; i++)
            {
                shiftingList.Add($"Test{i}");
            }

            for (int i = 0; i < entriesToRemove; i++)
            {
                shiftingList.RemoveFromEnd();
            }

            Assert.AreEqual(shiftingList.Count, Math.Max(maxCount - entriesToRemove, 0));

            for (int i = 0; i < shiftingList.Count; i++)
            {
                Assert.AreEqual(shiftingList[i], $"Test{maxCount - i - 1}");
            }
        }
예제 #5
0
        public static int Compute(List <int> l, int friendindex)
        {
            bool flag = false;
            int  n    = 0;

            Console.WriteLine("проверяем нужны ли билеты другу вообще");
            if (l[friendindex] == 0)
            {
                flag = true;
                Console.WriteLine("нет не нужны");
            }
            Console.WriteLine("нужны,чекаем есть ли в очереди нули");
            if (flag == false)
            {
                for (int i = 0; i < l.Count; i++)
                {
                    if (l[i] == 0)
                    {
                        Console.WriteLine("есть прохожий,удаляем его");
                        l.RemoveAt(i);
                        if (i < friendindex)
                        {
                            friendindex--;
                        }
                        i--;
                        Console.WriteLine("Индекс друга" + friendindex);
                    }
                }

                Console.WriteLine("Нулей нет");

                while (l[0] != 1 | friendindex != 0)
                {
                    if (l[0] == 1)
                    {
                        l.RemoveAt(0);
                        friendindex--;
                        n++;
                        WriteList.Write(l);
                    }
                    else
                    {
                        if (friendindex == 0)
                        {
                            l = ShiftingList.ShiftList(l);
                            l[l.Count - 1] -= 1;
                            friendindex     = l.Count - 1;
                            n++;
                            WriteList.Write(l);
                        }
                        else
                        {
                            l = ShiftingList.ShiftList(l);
                            l[l.Count - 1] -= 1;
                            friendindex--;
                            n++;
                            WriteList.Write(l);
                        }
                    }
                }
            }


            return(n + 1);
        }