public void Constructor_WhenCalled_HasFirstIndex()
        {
            _iterator.MoveNext();
            ISegmentIterator segmentIterator = _iterator.Current;

            Assert.IsTrue(IteratorHasValues(segmentIterator, new int[] { 1, 2, 3, 0, 0, 4, 3, 4, 2 }));
        }
 public bool IteratorHasValues(ISegmentIterator iterator, int[] values)
 {
     foreach (int value in values)
     {
         if (value != iterator.GetCurrent().Value)
         {
             return(false);
         }
         iterator.Next();
     }
     return(true);
 }
Ejemplo n.º 3
0
        private void BuildValueList(ISegmentIterator iterator)
        {
            _values = new List <int>();

            iterator.First();
            while (!iterator.IsDone())
            {
                var value = iterator.GetCurrent().Value;
                if (value != CellValue.Unknown.Value)
                {
                    _values.Add(value);
                }

                iterator.Next();
            }
        }
Ejemplo n.º 4
0
        private bool Reduce(ISegmentIterator iterator)
        {
            var finished = true;

            iterator.First();
            while (!iterator.IsDone())
            {
                var cell = iterator.GetCurrent();

                foreach (int v in _values)
                {
                    if (cell.RemoveCandidate(v))
                    {
                        finished = false;
                    }
                }

                iterator.SetCurrent(cell);

                iterator.Next();
            }
            return(finished);
        }
Ejemplo n.º 5
0
        public bool Execute(ISegmentIterator iterator)
        {
            _values = new List <int>();

            iterator.First();
            while (!iterator.IsDone())
            {
                var cell = iterator.GetCurrent();

                if (cell.Value != CellValue.Unknown.Value)
                {
                    if (_values.Exists(x => x == cell.Value))
                    {
                        _validated = false;
                        return(false);
                    }
                    _values.Add(cell.Value);
                }

                iterator.Next();
            }
            _validated = true;
            return(true);
        }
Ejemplo n.º 6
0
 public SegementInfoAtEnd(ISegmentIterator iterator, Segment segment, float distanceSum)
 {
     _segment = segment;
     _distanceFull = distanceSum;
     _direction = iterator.Direction;
 }
Ejemplo n.º 7
0
        public bool Execute(ISegmentIterator iterator)
        {
            BuildValueList(iterator);

            return(Reduce(iterator));
        }