Question: I have a nested list as the following example (want to remove lists with same or incremented elements such as `{1,2,3,4,5}, {2,2,2,2,2}, {1,1,1,1,1}`):

```
test={{1,2,3,4,5}, {1,1,1,1,1}, {2,4,6,8,10}, {2,2,2,2,2}, {3,5,2,4,8}};
test1=DeleteCases[test,{1,2,3,4,5}];
test1=DeleteCases[test1,{1,1,1,1,1}];
test1=DeleteCases[test1,{2,2,2,2,2}];

```

So the result is `test1={{3,5,2,4,8}}`(here I also delete the case {2,4,6,8,10} due to the equal increaments).

With the above way I can get the list which removes the list that elements are the same or incremented. 

The problem is ***when the `test` is very large and I don't know what exactly elements are***, how can I efficiently remove the lists where elements are the same or incremented? Is there a clever way to do this?

Thanks for all the help in advance!

Answer: 
```
Select[test, (! Equal @@ #) && (! AllTrue[Differences[#], EqualTo[1]]) &]

```
You say you're interested in working with large lists. In that case it is better to avoid [`Select`](http://reference.wolfram.com/language/ref/Select). Here is an alternate function using [`Dot`](http://reference.wolfram.com/language/ref/Dot) and [`Pick`](http://reference.wolfram.com/language/ref/Pick):

```
removeProgressions[list_?MatrixQ]:=Module[{len=Dimensions[list][[2]]},
    Pick[list, Unitize @ Total[Abs[list . Partition[{1,-2,1}, len-2, 1, {-1, 1}, 0]], {2}], 1]
]

```

Timing comparison:

```
SeedRandom[1]
list = RandomInteger[10, {10^6, 5}];
r1 = removeProgressions[list]; //AbsoluteTiming
r2 = Select[Not @* MatchQ[{(a_)..}] @* Differences] @ list; //AbsoluteTiming

r1===r2

```

> 
> {0.138829, Null}
> 
> 
> {1.98615, Null}
> 
> 
> True
> 
> 
>