I like the concept of your algorithm in C# above but what are the definitions of <Column> and <ChipData> in your program? I would like to write a test program to verify the concept of what is playable and which patterns are not playable unless a new column is added. Thanks.