示例#1
0
 public override DomainElement ElementForIndex(int index)
 {
     if (index >= GetCardinality() || index < 0)
     {
         throw new IndexOutOfRangeException();
     }
     return(DomainElement.Of(First + index));
 }
示例#2
0
        public override int IndexOfElement(DomainElement element)
        {
            int value = element[0];

            if (value < First || value >= Second || element.GetNumberOfComponents() > 1)
            {
                throw new Exception("Element not in domain!");
            }

            return(value - First);
        }
示例#3
0
文件: Domain.cs 项目: vkristijan/NENR
 public bool HasElement(DomainElement element)
 {
     try
     {
         IndexOfElement(element);
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }
示例#4
0
        public override DomainElement ElementForIndex(int index)
        {
            int[] values = new int[GetNumberOfComponents()];

            for (int i = GetNumberOfComponents() - 1; i >= 0; --i)
            {
                int n = _domains[i].GetCardinality();
                values[i] = _domains[i].ElementForIndex(index % n)[0];
                index    /= n;
            }

            return(DomainElement.Of(values));
        }
示例#5
0
        public override int IndexOfElement(DomainElement element)
        {
            if (element.GetNumberOfComponents() != GetNumberOfComponents())
            {
                throw new Exception("Element not in domain!");
            }

            int index        = 0;
            int combinations = 1;

            for (int i = GetNumberOfComponents() - 1; i >= 0; --i)
            {
                DomainElement value = DomainElement.Of(element.GetComponentValue(i));
                index        += (combinations * _domains[i].IndexOfElement(value));
                combinations *= _domains[i].GetCardinality();
            }

            return(index);
        }
示例#6
0
文件: Domain.cs 项目: vkristijan/NENR
 public abstract int IndexOfElement(DomainElement element);