Esempio n. 1
0
        public override IntSet Complement(IntSet vocabulary0)
        {
            var vocabulary = vocabulary0 as IntervalIntSetBase;

            if (vocabulary == null)
            {
                throw new ArgumentException("Unsupported set type:" + vocabulary0, "vocabulary");
            }

            var result   = new IntervalIntSet(setType);
            Int previous = setType.MinValue;

            foreach (var interval in intervals)
            {
                if (interval.First != previous)
                {
                    var set = setType.Range(previous, interval.First - 1);
                    result.AddAll(set.Intersect(vocabulary));
                }

                previous = interval.Last + 1;
            }

            if (previous != setType.MaxValue)
            {
                var set = setType.Range(previous, setType.MaxValue);
                result.AddAll(set.Intersect(vocabulary));
            }

            result.UpdateHash();
            return(result);
        }
        public override IntSet Complement(IntSet vocabulary0)
        {
            var vocabulary = vocabulary0 as IntervalIntSetBase;
            if (vocabulary == null)
            {
                throw new ArgumentException("Unsupported set type:" + vocabulary0, "vocabulary");
            }

            var result = new IntervalIntSet(setType);
            Int previous = setType.MinValue;
            foreach (var interval in intervals)
            {
                if (interval.First != previous)
                {
                    var set = setType.Range(previous, interval.First - 1);
                    result.AddAll(set.Intersect(vocabulary));
                }

                previous = interval.Last + 1;
            }

            if (previous != setType.MaxValue)
            {
                var set = setType.Range(previous, setType.MaxValue);
                result.AddAll(set.Intersect(vocabulary));
            }

            result.UpdateHash();
            return result;
        }