Search code examples
c#.netc#-3.0

Functional way to check if array of numbers is sequential


Let's say that an array is sequential when each successful element has the value of previous element + 1. Suppose I have an array of numbers like {5,6,7,8} (sequential) or {1,2,5} (not sequential).

Is there a nice functional way to check if the array is sequential? I can do it with the following code:

bool IsSequential(int[] array)
{
    for (int i = 1; i < array.Length; i++)
       if (array[i] != array[i - 1] + 1)
            return false;
    return true;
}

I'm trying to determine if a poker hand is straight.


Solution

  • Try this one:

        bool IsSequential(int[] array)
        {
            return array.Zip(array.Skip(1), (a, b) => (a + 1) == b).All(x => x);
        }