# Connect-K in Java Data Structures Compelete Source code

**In the game of Connect-K, red and blue pieces are dropped into an N-by-N table.**The

the table stands up vertically so that pieces drop down to the bottom-most empty slots in their column. For example, consider the following two configurations:

**- Legal Position -**.......

..................R.....RB....BRB...RBBR.. -

**Illegal Position -**

............................Bad - ..BR......R....RBBR..

In these pictures, each '.' represents an empty slot, each 'R' represents a slot filled with a red piece, and each 'B' represents a slot filled with a blue piece. The left configuration is legal, but the right one is not. This is because one of the pieces in the third column (marked with the arrow) has not fallen down to the empty slot below it.

A player wins if they can place at least K pieces of their colour in a row, either horizontally, vertically, or diagonally. The four possible orientations are shown below:

**- Four in a row -**

R RRRR R RR R RR R RR R R

In the "

**Legal Position**" diagram at the beginning of the problem statement, both players had lined up two pieces in a row, but not three.

You have a tricky plan to ensure victory with Connect-K! When your opponent is not looking, you are going to rotate the board 90 degrees clockwise onto its side. Gravity will then cause the pieces to fall down into a new position as shown below:

**- Start -**

........................R......RB....BRB...RBBR.. - Rotate -

.......R......BB..... BRRR...RBB.................. - Gravity -

.....................R......BB.....BRR....RBBR... Unfortunately, you only have time to rotate once before your opponent will notice.All that remains is picking the right time to make your move. Given a board position, you should determine which player (or players!) will have K pieces in a row after you rotate the board clockwise and gravity takes effect in the new direction.

**Notes**You can rotate the board only once.Assume that gravity only takes effect after the board has been rotated completely. Only check for winners after gravity has finished taking effect.

**Input**

The first line of the input gives the number of test cases, T. T test cases follow, each beginning with a line containing the integers N and K. The next N lines will each be exactly N characters long, showing the initial position of the board, using the same format as the diagrams above.

The initial position in each test case will be a legal position that can occur during a game of Connect-K. In particular, neither player will have already formed K pieces in a row.

**Output**

For each test case, output one line containing "Case #x: y", where x is the case number (starting from 1), and y is one of "Red", "Blue", "Neither", or "Both". Here, y indicates which player or players will have K pieces in a row after you rotate the board.

**Limits**

1 ≤ T ≤ 100.3 ≤ K ≤ N. Small dataset 3 ≤ N ≤ 7.Large dataset

3 ≤ N ≤ 50.

**Example**

You can search the Internet for another algorithm that has not been taught in class, and present, subject to the approval of the lecturer. Whatever the algorithm chose, the group will have to find (or implement) a Java implementation and show it, run it and discuss the code of such algorithm in a PowerPoint presentation in front of the class at the end of the course.

**Submission**

For Task 1, each student is required to submit one zip file including the following:

**A Word report in two sections:**

- a short description of the solution for the first problem
- an Eclipse project with all the source code (and compiled code) in a zip file named with the student id number.

**For Task 2,**each group is required to make one single submission including the following:

- a 30 min PowerPoint presentation on the second problem (10 to 20 slides)
- an Eclipse project with the working java code of the algorithm to be demoed during the presentation

You'll get 1 file (1.4KB)