Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Functional way to check if array of numbers is sequential

Tags:

c#

.net

c#-3.0

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.

like image 811
Axarydax Avatar asked Aug 14 '13 06:08

Axarydax


1 Answers

Try this one:

    bool IsSequential(int[] array)
    {
        return array.Zip(array.Skip(1), (a, b) => (a + 1) == b).All(x => x);
    }
like image 141
Kamil Budziewski Avatar answered Sep 25 '22 14:09

Kamil Budziewski