public int GetNextValue() { var coordinates = GetNextCoordinate(); var nextPoint = new SpiralGridPoint() { index = _spiralGrid.Count, x = coordinates.Item1, y = coordinates.Item2 }; var adjacent = GetPriorAdjacentPoints(nextPoint); var sum = adjacent.Sum(p => p.value); nextPoint.value = sum; _spiralGrid.Add(nextPoint); return(sum); }
private IEnumerable <SpiralGridPoint> GetPriorAdjacentPoints(SpiralGridPoint point) { return(_spiralGrid.Where(p => p.index < point.index && Math.Abs(point.x - p.x) <= 1 && Math.Abs(point.y - p.y) <= 1)); }