Example #1
0
        public void AddVertex(LineAAVertex val)
        {
            int count = _list.Count;

            if (count > 1)
            {
                LineAAVertex[] innerArray = _list.UnsafeInternalArray;
                if (!innerArray[count - 2].IsDiff(innerArray[count - 1]))
                {
                    _list.RemoveLast();
                }
            }
            _list.Append(val);
        }
Example #2
0
        public void AddVertex(LineAAVertex val)
        {
            int count = list.Count;

            if (count > 1)
            {
                var innerArray = list.Array;
                if (!innerArray[count - 2].IsDiff(innerArray[count - 1]))
                {
                    list.RemoveLast();
                }
            }
            list.AddVertex(val);
        }
Example #3
0
        /// <summary>
        /// Randomly selects a sound from the list and returns the results.
        /// </summary>
        /// <returns></returns>
        public FileInfo GetRandomSound()
        {
            // Ignore empty lists
            if (Count == 0)
            {
                throw new Exception(Name + "No music to play!");
            }

            // See if the recently played list is too big
            if (recentlyPlayed.Count > RecentlyPlayedSize)
            {
                // Remove the last one
                recentlyPlayed.RemoveLast();
            }

            // Randomly select one
            while (true)
            {
                // Select a random sound
                int      index = Entropy.Next(0, Count);
                FileInfo sound = this[index];

                // See if we are in the list
                if (!recentlyPlayed.Contains(sound))
                {
                    // We aren't in the recently played
                    recentlyPlayed.InsertFirst(sound);
                    return(sound);
                }
            }
        }
Example #4
0
        // Event patterns on indexed collections

        public static void IndexedCollectionEvents()
        {
            IList <int>       coll = new ArrayList <int>();
            ICollection <int> bag  = new HashBag <int>();

            bag.AddAll(new[] { 3, 2, 5, 5, 7, 7, 5, 3, 7, 7 });
            // Add item inserted handler
            coll.ItemInserted
                += delegate(Object c, ItemAtEventArgs <int> args)
                {
                Console.WriteLine("Item {0} inserted at {1}",
                                  args.Item, args.Index);
                };
            coll.InsertAll(0, bag);
            // Add item removed-at handler
            coll.ItemRemovedAt
                += delegate(Object c, ItemAtEventArgs <int> args)
                {
                Console.WriteLine("Item {0} removed at {1}",
                                  args.Item, args.Index);
                };
            coll.RemoveLast();
            coll.RemoveFirst();
            coll.RemoveAt(1);
        }
Example #5
0
        private void RandomBoardLayout(SCG.IEnumerable <Tile> tiles, SCG.IEnumerable <HexTile> hexes, int x1, int y1, int x2, int y2, int maxd1, int maxd2)
        {
            IList <HexTile> hexRandom = new ArrayList <HexTile>();

            hexRandom.AddAll(from hex in hexes orderby RNG.Next() select hex);
            foreach (var t in tiles)
            {
                var d1 = this.tiles[x1][y1].DistanceTo(t);
                var d2 = this.tiles[x2][y2].DistanceTo(t);
                if (d1 == maxd1 && d2 >= maxd2 + 1 || d1 >= maxd1 + 1 && d2 == maxd2 || d1 == maxd1 + 1 && d2 == maxd2 + 1)
                {
                    t.HexTile = new OceanHexTile();
                }
                else if (d1 <= maxd1 && d2 <= maxd2)
                {
                    if (hexRandom.Count == 0)
                    {
                        t.HexTile = new DesertHexTile("");
                    }
                    else
                    {
                        t.HexTile = hexRandom.RemoveLast();
                    }
                }
                else
                {
                    t.HexTile = null;
                }
            }
        }
Example #6
0
        // удаление из конца
        public void RemoveLastTest(int expectedNumber, int actualNumber)
        {
            ArrayList expected = GetListMockRemovedLast(expectedNumber);

            ArrayList actual = GetListMock(actualNumber);

            actual.RemoveLast();

            Assert.AreEqual(expected, actual);
        }
Example #7
0
 public void RemoveLast()
 {
     list.Add(4); list.Add(56); list.Add(8);
     listen();
     list.RemoveLast();
     seen.Check(new CollectionEvent <int>[] {
         new CollectionEvent <int>(EventType.RemovedAt, new ItemAtEventArgs <int>(8, 2), guarded),
         new CollectionEvent <int>(EventType.Removed, new ItemCountEventArgs <int>(8, 1), guarded),
         new CollectionEvent <int>(EventType.Changed, new EventArgs(), guarded)
     });
 }
Example #8
0
        public void RemoveLastTest(int[] array, int[] arrayExpected)
        {
            ArrayList arrayList = new ArrayList(array);

            arrayList.RemoveLast();

            ArrayList actual = arrayList;

            ArrayList expected = new ArrayList(arrayExpected);

            Assert.AreEqual(expected, actual);
        }
Example #9
0
        // Select N random items from list, without replacement.
        // Faster when list is efficiently indexable and modifiable.
        // Modifies the given list.

        public static SCG.IEnumerable <T> RandomWithout2 <T>(ArrayList <T> list, int N)
        {
            for (int i = N; i > 0; i--)
            {
                int j = rnd.Next(list.Count);
                T   x = list[j], replacement = list.RemoveLast();
                if (j < list.Count)
                {
                    list[j] = replacement;
                }
                yield return(x);
            }
        }
Example #10
0
        private void RandomChitLayout(SCG.IEnumerable <Tile> tiles, SCG.IEnumerable <ProductionChit> chits)
        {
            foreach (var t in AllTiles)
            {
                t.Chits.Clear();
            }

            IList <ProductionChit> chitRandom = new ArrayList <ProductionChit>();

            chitRandom.AddAll(from chit in chits orderby RNG.Next() select chit);
            foreach (Tile h in (from t in tiles where t.HexTile != null && t.HexTile.IsLand && t.HexTile.TileType != Core.TileType.Desert select t))
            {
                h.Chits.Add(chitRandom.RemoveLast());
            }
        }
Example #11
0
    // Select N random items from list, without replacement.
    // Faster when list is efficiently indexable and modifiable.
    // Modifies the given list.

    public static SCG.IEnumerable <T> RandomWithout2 <T>(ArrayList <T> list, int N)
    {
        for (var i = N; i > 0; i--)
        {
            var j           = _random.Next(list.Count);
            var x           = list[j];
            var replacement = list.RemoveLast();

            if (j < list.Count)
            {
                list[j] = replacement;
            }

            yield return(x);
        }
    }
Example #12
0
    // Event patterns on indexed collections
    public static void IndexedCollectionEvents()
    {
        var coll = new ArrayList <int>();
        var bag  = new HashBag <int>();

        bag.AddAll(new[] { 3, 2, 5, 5, 7, 7, 5, 3, 7, 7 });

        // Add item inserted handler
        coll.ItemInserted += (o, args) => Console.WriteLine($"Item {args.Item} inserted at {args.Index}");
        coll.InsertAll(0, bag);

        // Add item removed-at handler
        coll.ItemRemovedAt += (o, args) => Console.WriteLine($"Item {args.Item} removed at {args.Index}");
        coll.RemoveLast();
        coll.RemoveFirst();
        coll.RemoveAt(1);
    }
Example #13
0
        public void Main()
        {
            // Construct list using collection initializer
            var list = new ArrayList <int> {
                2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47
            };

            // Get index of item
            var index = list.IndexOf(23);

            // Get an index range
            var range = list.GetIndexRange(index, 4);

            // Print range in reverse order
            foreach (var prime in range.Backwards())
            {
                Console.WriteLine(prime);
            }

            // Remove items within index range
            list.RemoveIndexRange(10, 3);

            // Remove item at index
            var second = list.RemoveAt(1);

            // Remove first item
            var first = list.RemoveFirst();

            // Remove last item
            var last = list.RemoveLast();

            // Create array with items in list
            var array = list.ToArray();

            // Clear list
            list.Clear();

            // Check if list is empty
            var isEmpty = list.IsEmpty;

            // Add item
            list.Add(first);

            // Add items from enumerable
            list.AddRange(array);

            // Insert item into list
            list.Insert(1, second);

            // Add item to the end
            list.Add(last);

            // Check if list is sorted
            var isSorted = list.IsSorted();

            // Reverse list
            list.Reverse();

            // Check if list is sorted
            var reverseComparer = ComparerFactory.CreateComparer <int>((x, y) => y.CompareTo(x));

            isSorted = list.IsSorted(reverseComparer);

            // Shuffle list
            var random = new Random(0);

            list.Shuffle(random);

            // Print list using indexer
            for (var i = 0; i < list.Count; i++)
            {
                Console.WriteLine($"{i,2}: {list[i],2}");
            }

            // Check if list contains all items in enumerable
            var containsRange = list.ContainsRange(array);

            // Construct list using enumerable
            var otherList = new ArrayList <int>(array);

            // Add every third items from list
            otherList.AddRange(list.Where((x, i) => i % 3 == 0));

            containsRange = list.ContainsRange(otherList);

            // Remove all items not in enumerable
            otherList.RetainRange(list);

            // Remove all items in enumerable from list
            list.RemoveRange(array);

            // Sort list
            list.Sort();

            // Copy to array
            list.CopyTo(array, 2);

            return;
        }
Example #14
0
        public static void Main()
        {
            //var eq = new C6.ComparerFactory.EqualityComparer<string>(ReferenceEquals,
            //    SCG.EqualityComparer<string>.Default.GetHashCode);

            //var items = new[] { "-8", "Ab", "6", "-4", "5", "-2", "-1", "1", "10", "8" };
            //var al = new ArrayList<string>(items);
            //var v1 = al.View(al.Count - 2, 2);
            //var v2 = al.View(al.Count - 2, 2);

            var items      = new[] { "-8", "Ab", "6", "-4", "5", "-2", "-1", "1", "10", "8" };
            var collection = new HashedArrayList <string>(items);

            Console.WriteLine(collection.Contains("10"));
            Console.WriteLine(collection.Add("10"));



            // BUG: Sorting
            //var items = new[] { "-8", "Ab", "6", "-4", "5", "-2", "-1", "1", "10", "8" };
            //var collection = new HashedLinkedList<string>(items);

            //var v0 = collection.View(0, 2);
            //var v2 = collection.View(1, 2);
            //var v4 = collection.View(4, 2);
            //var v6 = collection.View(7, 1);
            //var vCount2 = collection.View(collection.Count - 2, 2);

            //Console.WriteLine("Views before calling Sort()");
            //Console.WriteLine($"v0 = {v0}");
            //Console.WriteLine($"v2 = {v2}");
            //Console.WriteLine($"v4 = {v4}");
            //Console.WriteLine($"v6 = {v6}");
            //Console.WriteLine($"vCount2 = {vCount2}");

            //v4.Sort();

            //Console.WriteLine("Views after calling Sort()");
            //Console.WriteLine($"v0 = {v0}");
            //Console.WriteLine($"v2 = {v2}");
            //Console.WriteLine($"v4 = {v4}");
            //Console.WriteLine($"v6 = {v6}");
            //Console.WriteLine($"vCount2 = {vCount2}");



            // ==============================
            // RemoveRange
            //var items = new[] { "8", "Ab", "3", "4", "5", "6", "7", "9" };
            //var collection = new ArrayList<string>(items);
            //var view1 = collection.View(0, 1); // longer
            //var view2 = collection.View(0, 2);
            //var item = view1.Choose();
            //var itms = new ArrayList<string>(new[] { item });

            //view1.RemoveRange(itms);
            //Console.WriteLine(view2);


            //var items = new[] { "8", "Ab", "3", "4", "5", "6", "7", "9" };
            // HLL.Reverse
            //var items = new[] { "a", "b", "c", "d", "e" };
            //var linkedList = new ArrayList<string>(items);
            //var v1 = linkedList.View(0, linkedList.Count);
            //var v2 = linkedList.View(0, 2);
            //v1.Reverse();
            //v1.Reverse();
            //Console.WriteLine(v2);

            // HLL.Sort
            //var items = new[] { "b", "a", "c", "e", "d" };
            //var linkedList = new HashedLinkedList<string>(items);
            //var v1 = linkedList.View(0, 3);
            //var v2 = linkedList.View(3, 2);
            //v1.Sort();
            //Console.WriteLine(v1);
            //Console.WriteLine(v2);

            // HAL.Add()
            //var items = new[] { "8", "Ab", "3", "4", "5", "6", "7", "9" };
            //var arrayList = new LinkedList<string>(items);
            //var v1 = arrayList.View(0, 7);
            //var v2 = arrayList.View(0, 7);
            //v1.Add("333333333");
            //Console.WriteLine(v1);
            //Console.WriteLine(v2);


            //Console.WriteLine(view1.IsValid);
            //Console.WriteLine(view);
            //Console.WriteLine(collection);



            return;

            // Construct list using collection initializer
            //var list = new ArrayList<int>() { 2, 3, 5, 5, 7, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33};
            var list = new ArrayList <int>()
            {
                2, 3
            };
            var backList = list.Backwards();

            backList.ToList().ForEach(x => Console.Write(x + ", "));
            Console.WriteLine(backList.IsValid);

            list.Add(10);
            Console.WriteLine(backList.IsValid);
            //backList.ToList().ForEach(x => Console.Write(x));


            //var list = list1.View(2, list1.Count-2);
            //var v = list.View(3,4);
            //var v2 = v.View(1, 2);
            //var items = new ArrayList<int>() { 3, 13, 7, 17};
            //Console.WriteLine(ArrayList<int>.EmptyArray);



            var dupl = list.FindDuplicates(5);

            Console.WriteLine(dupl);
            list.Add(-100);
            var arr = dupl.ToArray();

            list.Dispose();



            //en.ToList().ForEach(x => Console.WriteLine(x));


            //Console.WriteLine(v);
            //Console.WriteLine(v2);
            //Console.WriteLine(list);

            return;

            // Get index of item
            var index = list.IndexOf(23);

            // Get an index range
            var range = list.GetIndexRange(index, 4);

            // Print range in reverse order
            foreach (var prime in range.Backwards())
            {
                Console.WriteLine(prime);
            }

            // Remove items within index range
            list.RemoveIndexRange(10, 3);

            // Remove item at index
            var second = list.RemoveAt(1);

            // Remove first item
            var first = list.RemoveFirst();

            // Remove last item
            var last = list.RemoveLast();

            // Create array with items in list
            var array = list.ToArray();

            // Clear list
            list.Clear();

            // Check if list is empty
            var isEmpty = list.IsEmpty;

            // Add item
            list.Add(first);

            // Add items from enumerable
            list.AddRange(array);

            // Insert item into list
            list.Insert(1, second);

            // Add item to the end
            list.Add(last);

            // Check if list is sorted
            var isSorted = list.IsSorted();

            // Reverse list
            list.Reverse();

            // Check if list is sorted
            var reverseComparer = ComparerFactory.CreateComparer <int>((x, y) => y.CompareTo(x));

            isSorted = list.IsSorted(reverseComparer);

            // Shuffle list
            var random = new Random(0);

            list.Shuffle(random);

            // Print list using indexer
            for (var i = 0; i < list.Count; i++)
            {
                Console.WriteLine($"{i,2}: {list[i],2}");
            }

            // Check if list contains all items in enumerable
            var containsRange = list.ContainsRange(array);

            // Construct list using enumerable
            var otherList = new ArrayList <int>(array);

            // Add every third items from list
            otherList.AddRange(list.Where((x, i) => i % 3 == 0));

            containsRange = list.ContainsRange(otherList);

            // Remove all items not in enumerable
            otherList.RetainRange(list);

            // Remove all items in enumerable from list
            list.RemoveRange(array);

            // Sort list
            list.Sort();

            // Copy to array
            list.CopyTo(array, 2);

            return;
        }
Example #15
0
        private void RandomChitLayout(SCG.IEnumerable<Tile> tiles, SCG.IEnumerable<ProductionChit> chits)
        {
            foreach (var t in AllTiles) t.Chits.Clear();

            IList<ProductionChit> chitRandom = new ArrayList<ProductionChit>();
            chitRandom.AddAll(from chit in chits orderby RNG.Next() select chit);
            foreach (Tile h in (from t in tiles where t.HexTile != null && t.HexTile.IsLand && t.HexTile.TileType != Core.TileType.Desert select t))
            {
                h.Chits.Add(chitRandom.RemoveLast());
            }
        }
Example #16
0
        private void operatorClick(object sender, EventArgs e)
        {
            if (inputTextBox.Text.Length > 22)
            {
                return;
            }
            string text = ((Button)sender).Text;

            if (!isNumberLast)
            {
                if (text == "(")
                {
                    if (elements.Count > 0 && (ONP.isOperator(elements.Last()) || elements.Last() == "("))
                    {
                        if (inputTextBox.Text.LastChar() == ",")
                        {
                            return;
                        }
                        inputTextBox.Text += "(";
                        elements.Add(text);
                    }
                    else if (inputTextBox.Text == "0")
                    {
                        inputTextBox.Text = "(";
                        elements.Add(text);
                    }
                }
                else if (inputTextBox.Text == "0")
                {
                    if (text == "-")
                    {
                        elements.Add(text);
                        inputTextBox.Text = text;
                    }
                }
                else if (inputTextBox.Text.Contains("="))
                {
                    elements.Add(result);
                    elements.Add(text);
                    inputTextBox.Text = result + text;
                    result            = "";
                }
                else if (ONP.isOperator(text))
                {
                    if (inputTextBox.Text.Length > 0 && elements.Last() == ")")
                    {
                        elements.Add(text);
                        inputTextBox.Text += text;
                    }
                    else
                    {
                        if (inputTextBox.Text.Length > 1 && elements.Last() == "(")
                        {
                            return;
                        }
                        else
                        {
                            elements.RemoveLast();
                            elements.Add(text);
                            inputTextBox.Text  = inputTextBox.Text.RemoveLastChar();
                            inputTextBox.Text += text;
                        }
                    }
                }
                else if (text == ")" && isBracketNeeded())
                {
                    elements.Add(text);
                    inputTextBox.Text += text;
                }
            }
            else
            {
                if (ONP.isOperator(text) || (text == ")" && isBracketNeeded()))
                {
                    elements.Add(currentNumber);
                    currentNumber = "";
                    isNumberLast  = false;
                    elements.Add(text);
                    inputTextBox.Text += text;
                }
            }
            MRclicked = false;
        }
Example #17
0
 private void RandomBoardLayout(SCG.IEnumerable<Tile> tiles, SCG.IEnumerable<HexTile> hexes, int x1, int y1, int x2, int y2, int maxd1, int maxd2)
 {
     IList<HexTile> hexRandom = new ArrayList<HexTile>();
     hexRandom.AddAll(from hex in hexes orderby RNG.Next() select hex);
     foreach (var t in tiles)
     {
         var d1 = this.tiles[x1][y1].DistanceTo(t);
         var d2 = this.tiles[x2][y2].DistanceTo(t);
         if (d1 == maxd1 && d2 >= maxd2 + 1 || d1 >= maxd1 + 1 && d2 == maxd2 || d1 == maxd1 + 1 && d2 == maxd2 + 1)
         {
             t.HexTile = new OceanHexTile();
         }
         else if (d1 <= maxd1 && d2 <= maxd2)
         {
             if (hexRandom.Count == 0)
             {
                 t.HexTile = new DesertHexTile("");
             }
             else
             {
                 t.HexTile = hexRandom.RemoveLast();
             }
         }
         else
         {
             t.HexTile = null;
         }
     }
 }