예제 #1
0
        public void RemoveAll()
        {
            var list2 = new HashBag <int>();

            hashbag.Add(4);
            hashbag.Add(5);
            hashbag.Add(6);
            hashbag.Add(4);
            hashbag.Add(5);
            list2.Add(5);
            list2.Add(4);
            list2.Add(7);
            list2.Add(4);
            hashbag.RemoveAll(list2);
            Assert.IsTrue(IC.seteq(hashbag, 5, 6));
            hashbag.Add(5);
            hashbag.Add(4);
            list2.Clear();
            list2.Add(6);
            list2.Add(5);
            hashbag.RemoveAll(list2);
            Assert.IsTrue(IC.seteq(hashbag, 4, 5));
            list2.Clear();
            list2.Add(7);
            list2.Add(8);
            list2.Add(9);
            hashbag.RemoveAll(list2);
            Assert.IsTrue(IC.seteq(hashbag, 4, 5));
        }
예제 #2
0
 // From an anagram point of view, a word is just a bag of
 // characters.  So an anagram class is represented as HashBag<char>
 // which permits fast equality comparison -- we shall use them as
 // elements of hash sets or keys in hash maps.
 public static HashBag<char> AnagramClass(String s)
 {
     HashBag<char> anagram = new HashBag<char>();
     foreach (char c in s)
         anagram.Add(c);
     return anagram;
 }
예제 #3
0
        static void PrintMostCommon(int maxWords, String filename)
        {
            ICollection <String> wordbag = new HashBag <String>();
            Regex delim = new Regex("[^a-zA-Z0-9]+");

            using (TextReader rd = new StreamReader(filename)) {
                for (String line = rd.ReadLine(); line != null; line = rd.ReadLine())
                {
                    foreach (String s in delim.Split(line))
                    {
                        if (s != "")
                        {
                            wordbag.Add(s);
                        }
                    }
                }
            }
            KeyValuePair <String, int>[] frequency
                = wordbag.ItemMultiplicities().ToArray();
            // Sorting.IntroSort(frequency, 0, frequency.Length, new FreqOrder());
            Sorting.IntroSort(frequency, 0, frequency.Length,
                              new DelegateComparer <KeyValuePair <String, int> >
                                  ((p1, p2) =>
            {
                int major = p2.Value.CompareTo(p1.Value);
                return(major != 0 ? major : p1.Key.CompareTo(p2.Key));
            }));
            int stop = Math.Min(frequency.Length, maxWords);

            for (int i = 0; i < stop; i++)
            {
                KeyValuePair <String, int> p = frequency[i];
                Console.WriteLine("{0,4} occurrences of {1}", p.Value, p.Key);
            }
        }
예제 #4
0
 public override void CountUses(Typ typ, HashBag <FullCellAddr> numberUses)
 {
     if (typ == Typ.Number)
     {
         numberUses.Add(this.cellAddr);
     }
 }
예제 #5
0
        public HashBag <T> CopyToHashBag <T>(ICollection <T> lst)
        {
            HashBag <T> lstCopy = new HashBag <T>();

            foreach (var item in lst)
            {
                lstCopy.Add((T)item);
            }
            return(lstCopy);
        }
예제 #6
0
파일: CharBags.cs 프로젝트: sestoft/C5
    public static HashBag <char> HashBag(string s)
    {
        var anagram = new HashBag <char>();

        foreach (char c in s)
        {
            anagram.Add(c);
        }
        return(anagram);
    }
예제 #7
0
        // From an anagram point of view, a word is just a bag of
        // characters.  So an anagram class is represented as HashBag<char>
        // which permits fast equality comparison -- we shall use them as
        // elements of hash sets or keys in hash maps.

        public static HashBag <char> AnagramClass(String s)
        {
            HashBag <char> anagram = new HashBag <char>();

            foreach (char c in s)
            {
                anagram.Add(c);
            }
            return(anagram);
        }
예제 #8
0
        public void ContainsAll()
        {
            HashBag <int> list2 = new HashBag <int>();

            Assert.IsTrue(hashbag.ContainsAll(list2));
            list2.Add(4);
            Assert.IsFalse(hashbag.ContainsAll(list2));
            hashbag.Add(4);
            Assert.IsTrue(hashbag.ContainsAll(list2));
            hashbag.Add(5);
            Assert.IsTrue(hashbag.ContainsAll(list2));
            list2.Add(20);
            Assert.IsFalse(hashbag.ContainsAll(list2));
            hashbag.Add(20);
            Assert.IsTrue(hashbag.ContainsAll(list2));
            list2.Add(4);
            Assert.IsFalse(hashbag.ContainsAll(list2));
            hashbag.Add(4);
            Assert.IsTrue(hashbag.ContainsAll(list2));
        }
예제 #9
0
    // From an anagram point of view, a word is just a bag of
    // characters.  So an anagram class is represented as HashBag<char>
    // which permits fast equality comparison -- we shall use them as
    // elements of hash sets or keys in hash maps.
    private static HashBag <char> AnagramClass(string s)
    {
        var anagram = new HashBag <char>();

        foreach (char c in s)
        {
            anagram.Add(c);
        }

        return(anagram);
    }
예제 #10
0
파일: CharBags.cs 프로젝트: hickford/C5
 public static void FindCollisions(SCG.IEnumerable<String> ss) {
   HashBag<int> occurrences = new HashBag<int>();
   foreach (String s in ss) {
     TreeBag<char> tb = TreeBag(s);
     // HashBag<char> hb = HashBag(s);
     occurrences.Add(sequencedTreeBagHasher.GetHashCode(tb));
     // unsequencedTreeBagHasher.GetHashCode(tb);
     // unsequencedHashBagHasher.GetHashCode(hb);
   }
   
 }
예제 #11
0
    public static void FindCollisions(SCG.IEnumerable <String> ss)
    {
        HashBag <int> occurrences = new HashBag <int>();

        foreach (String s in ss)
        {
            TreeBag <char> tb = TreeBag(s);
            // HashBag<char> hb = HashBag(s);
            occurrences.Add(sequencedTreeBagHasher.GetHashCode(tb));
            // unsequencedTreeBagHasher.GetHashCode(tb);
            // unsequencedHashBagHasher.GetHashCode(hb);
        }
    }
예제 #12
0
    public Rid Submit(Ip ip, int time)
    {
        int jobCount = userJobs.ContainsCount(ip);
        Rid rid      = new Rid();
        Job job      = new Job(rid, ip, time + 60 * jobCount);
        IPriorityQueueHandle <Job> h = null;

        jobQueue.Add(ref h, job);
        userJobs.Add(ip);
        jobs.Add(rid, h);
        Console.WriteLine("Submitted {0}", job);
        return(rid);
    }
예제 #13
0
파일: JobQueue.cs 프로젝트: younne0915/C5
        public Rid Submit(Ip ip, int time)
        {
            var jobCount = _userJobs.ContainsCount(ip);
            var rid      = new Rid();
            var job      = new Job(rid, ip, time + 60 * jobCount);
            IPriorityQueueHandle <Job> h = default;

            _jobQueue.Add(ref h, job);
            _userJobs.Add(ip);
            _jobs.Add(rid, h);

            Console.WriteLine($"Submitted {job}");

            return(rid);
        }
예제 #14
0
        public void RetainAll()
        {
            HashBag <int> list2 = new HashBag <int>();

            hashbag.Add(4); hashbag.Add(5); hashbag.Add(4); hashbag.Add(6); hashbag.Add(4);
            list2.Add(5); list2.Add(4); list2.Add(7); list2.Add(4);
            hashbag.RetainAll(list2);
            Assert.IsTrue(IC.seteq(hashbag, 4, 4, 5));
            hashbag.Add(6);
            list2.Clear();
            list2.Add(7); list2.Add(8); list2.Add(9);
            hashbag.RetainAll(list2);
            Assert.IsTrue(IC.eq(hashbag));
        }
예제 #15
0
        static void PrintMostCommon(int maxWords, string filename)
        {
            var wordbag   = new HashBag <string>();
            var delimiter = new Regex("[^a-zA-Z0-9]+");

            using (var reader = File.OpenText(filename))
            {
                for (var line = reader.ReadLine(); line != null; line = reader.ReadLine())
                {
                    foreach (var s in delimiter.Split(line))
                    {
                        if (s != "")
                        {
                            wordbag.Add(s);
                        }
                    }
                }
            }
            var frequency = wordbag.ItemMultiplicities().ToArray();

            Sorting.IntroSort(frequency, 0, frequency.Length,
                              // Lexicographic ordering: decreasing frequency, then increasing string
                              ComparerFactory <KeyValuePair <string, int> > .CreateComparer(
                                  (p1, p2) =>
            {
                int major = p2.Value.CompareTo(p1.Value);
                return(major != 0 ? major : p1.Key.CompareTo(p2.Key));
            }));
            var stop = Math.Min(frequency.Length, maxWords);

            for (var i = 0; i < stop; i++)
            {
                var p = frequency[i];
                Console.WriteLine("{0,4} occurrences of {1}", p.Value, p.Key);
            }
        }
예제 #16
0
        public void ToArray()
        {
            Assert.AreEqual("Alles klar", aeq(hashbag.ToArray()));
            hashbag.Add(7);
            hashbag.Add(3);
            hashbag.Add(10);
            hashbag.Add(3);

            int[] r = hashbag.ToArray();

            Array.Sort(r);
            Assert.AreEqual("Alles klar", aeq(r, 3, 3, 7, 10));
        }
예제 #17
0
 public void Choose()
 {
     hashbag.Add(7);
     Assert.AreEqual(7, hashbag.Choose());
 }
예제 #18
0
		public override void CountUses(Typ typ, HashBag<FullCellAddr> numberUses) {
			if (typ == Typ.Number) {
				numberUses.Add(this.cellAddr);
			}
		}