IOIQR P5 - Some Game
View as PDFApril Fools Contest, 2017
Some Game is a popular game played amongst a group of people. In this adaption of Some Game,  new players will make some moves upon an 
 by 
 board. Every square initially contains a 
. Player 
 makes the first move. After this move, player 
 makes the second move. This goes on until the final player (with number 
) has made a move. Afterwards, player 
 can move again. A move consists of player 
 putting 
 on any square with label 
.
Some Game will end when one player forms a row, column, diagonal or knight hop with a length of  or greater, containing only that player's number. If there are ties, the lowest number player wins. To make the board seem infinite, the players have glued the left and right ends of the board together (like a cylinder). Also, they have glued the top and bottom edges of the board together. Some Game will still end if the winning sequence goes across the glue.
Some Game will also end when there are no more valid moves. Moves are not permitted after Some Game ends.
For reference, a knight hop will be shown below. The initial square is A, and paths from A to any B are knight hops.
.......
..B.B..
.B...B.
...A...
.B...B.
..B.B..
.......
In the next few cases, . are unimportant squares, and 1 are squares with label .
 A     B     C      D
1..   1..   ...   .....
.1.   ...   1.1   .1...
..1   .1.   ...   .....
                  ..1..
                  ....1
In example A, player  will win if 
 is 
, or 
, or so on.
In example B, player  will win if 
 is 
.
In example C, player  will win if 
 is 
.
In example D, player  will win if 
 is 
. Note that knight hops must continue in the same direction, so if 
 is 
 or greater, player 
 would not win.
The standard input stream contains  sets of data. In every test case/set of data, the players have gotten tired and have simultaneously quit (Some Game is very tiring). You will work with arbitrary boards of Some Game, plus some extra info. Line 1 contains the extra info, which are 
, 
, 
, and 
 in this arrangement, and are also integers. There are 
 players playing Some Game (
). 
 and 
 are defined above (
). The winning threshold, 
 (
), is non-negative. The next 
 lines of input each contain 
 integers. Every integer on these 
 lines will be between 
 and 
 inclusive, and represents the state of the square on the board when the players have quit. If the Some Game game is still ongoing, or the board is full without a winner, print 
NO WINNERS. If player <x> has won, print PLAYER <x>, where <x> is an integer in the range . If the state of the board is impossible, print 
ERROR. Make sure to print an empty line between each line of output. Your task is to read this data and print the correct lines of output.
Sample Input
The sample input contains  sets of data.
1 3 3 4
1 0 0
0 1 0
0 0 1
1 3 3 2
1 0 0
0 0 0
0 1 0
2 3 3 2
2 2 2
1 0 1
0 0 0
2 5 5 3
0 0 0 2 0
0 1 0 0 0
0 0 2 0 0
2 0 1 0 0
0 0 0 0 1
Sample Output
PLAYER 1
PLAYER 1
ERROR
NO WINNERS
Comments