Problem Statement
We have a standard chessboard. The chessboard is a big square that is divided into 8x8 unit square cells. Both rows and columns of the chessboard are numbered from 0 to 7.
The center of mass of an empty chessboard is exactly in its middle: at the point between columns 3 and 4 horizontally and between rows 3 and 4 vertically.
There are some identical pawns currently placed on the chessboard. Each pawn is placed exactly in the middle of one of the cells. (No two pawns share the same cell.)
You are given the
You have a potentionally infinite supply of additional pawns, all identical to the ones already present on the chessboard.
You are going to place some (possibly none) additional pawns onto the board. Pawns must be added one at a time. Each pawn must be placed into the middle of a currently empty cell.
The pawns that are already on the board must remain where they are. It is not allowed to move or remove them.
Your primary goal: After you are done adding the pawns, the center of mass of the entire chessboard (the board plus all the pieces) must be exactly in the middle of the chessboard.
Your secondary goal: Add as few pawns as possible.
Return a
If there are multiple optimal solutions, you may return any one of them.
Definition
- Class:
- BalancedChessboard
- Method:
- addPawns
- Parameters:
- String[]
- Returns:
- String[]
- Method signature:
- String[] addPawns(String[] board)
- (be sure your method is public)
Notes
- A pawn is perfectly symmetric: the center of mass of a single pawn is in the middle of the pawn.
- We only care about the two horizontal coordinates of the center of mass. Its vertical coordinate may be arbitrary (and depends on the unknown shape of the pawns).
- If you have a collection of identical objects (e.g., your pawns), their center of mass lies at the arithmetic average of the centers of mass of those individual objects.
- The same is true for an arbitrary collection of objects, the only difference is that the arithmetic average becomes a weighted average in which the weights are the actual weights of the objects.
Constraints
- board will have exactly 8 elements.
- Each element of board will have exactly 8 characters.
- Each character in board will be either 'O' or '-'.
Examples
{"O------O", "--------", "--------", "--------", "--------", "--------", "--------", "O------O"}
Returns: {"O------O", "--------", "--------", "--------", "--------", "--------", "--------", "O------O" }
This chessboard already has its center of mass in its center, so the only optimal solution is to add zero pawns.
{"O------O", "--------", "--------", "--------", "--------", "--------", "--------", "-------O"}
Returns: {"O------O", "--------", "--------", "--------", "--------", "--------", "--------", "O------O" }
The optimal solution here is to add the pawn that will turn this chessboard into the one from Example 0.
{"--------", "--------", "--------", "--------", "-----O--", "----O---", "--------", "--------"}
Returns: {"--------", "--------", "-----O--", "O-------", "-----O--", "----O---", "--------", "--------" }
This test case has a nice symmetric optimal solution. However, there are also other optimal solutions that aren't symmetric. The example output shows one such solution.
{"OOOOOOOO", "--------", "--------", "--------", "--------", "--------", "--------", "--------"}
Returns: {"OOOOOOOO", "--------", "--------", "--------", "--------", "--------", "--------", "OOOOOOOO" }
The best way to balance out the pawns in the top row is to add pawns into the bottom row.
{"----OOOO", "----OOOO", "----OOOO", "----OOOO", "----OOOO", "----OOOO", "----OOOO", "----OOOO"}
Returns: {"OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO" }
{"---O-O--", "---O-O--", "-O--O---", "-O--O---", "---O-O--", "-O--O---", "OOO---OO", "-OOOO-O-"}
Returns: {"---OOOOO", "O--OOOO-", "-O--O---", "-O--O---", "---O-O--", "-O--O---", "OOO---OO", "-OOOO-O-" }
{"--------", "--------", "--------", "--------", "----OO--", "----OO--", "--------", "--------"}
Returns: {"--------", "---O----", "O-------", "--------", "----OO--", "----OO--", "--------", "--------" }
{"--------", "--------", "--------", "--------", "--------", "--------", "--------", "--------"}
Returns: {"--------", "--------", "--------", "--------", "--------", "--------", "--------", "--------" }
A board with no pawns is already perfectly balanced.
{"O----OO-", "---O--OO", "OO---OO-", "-OO--O-O", "O----O-O", "---OO-OO", "OO-----O", "O-O-OO--"}
Returns: {"O----OO-", "O--O--OO", "OO---OO-", "OOO--O-O", "O----O-O", "---OO-OO", "OO-----O", "O-O-OO--" }
{"--------", "-----O--", "--------", "O-------", "--O----O", "O-------", "-O------", "----O---"}
Returns: {"--------", "-----O-O", "----OO--", "O-------", "--O----O", "O-------", "-O------", "----O---" }
{"--OO-OOO", "O--O--OO", "-O-O-O-O", "OOOO---O", "------O-", "OOO-O-O-", "O-O-OOOO", "O-OO---O"}
Returns: {"--OO-OOO", "O--O--OO", "-OOO-O-O", "OOOO---O", "-O----O-", "OOO-O-O-", "O-O-OOOO", "O-OO---O" }
{"--O--O-O", "O-OOOOOO", "--O-OOOO", "O-OOO-O-", "OO-OOO-O", "OOOOO-O-", "OOO-O---", "O-O-OO-O"}
Returns: {"--O--O-O", "O-OOOOOO", "--O-OOOO", "OOOOOOOO", "OO-OOO-O", "OOOOO-O-", "OOO-O---", "O-O-OO-O" }
{"OOO-OO--", "-OO-O-OO", "--O--OOO", "OOOOOOO-", "-OOOO-OO", "-OOOOOO-", "OO-OO-OO", "-OOOOOOO"}
Returns: {"OOO-OO--", "OOOOOOOO", "-OOOOOOO", "OOOOOOO-", "-OOOO-OO", "-OOOOOO-", "OO-OO-OO", "-OOOOOOO" }
{"OOOOOOOO", "OOOOOOOO", "OOO-OOO-", "O--OOOO-", "-OOOOO-O", "OOOOOOOO", "O-O-OOOO", "OO-O-O-O"}
Returns: {"OOOOOOOO", "OOOOOOOO", "OOO-OOO-", "O--OOOO-", "-OOOOO-O", "OOOOOOOO", "OOOOOOOO", "OO-OOOOO" }
{"OOOOO-O-", "O-OOO-OO", "-OOO-OOO", "OO-OO--O", "OOOOOO-O", "-O--OOO-", "-OO-O-OO", "-OO-OO-O"}
Returns: {"OOOOO-O-", "O-OOO-OO", "-OOO-OOO", "OO-OO--O", "OOOOOO-O", "-OO-OOOO", "OOO-OOOO", "-OO-OO-O" }
{"--------", "--------", "--------", "--------", "--------", "--------", "--------", "--------"}
Returns: {"--------", "--------", "--------", "--------", "--------", "--------", "--------", "--------" }
{"O-OOOOOO", "OOO-OOOO", "O-OO-OOO", "O-OO-OOO", "OOOOOOOO", "O-OOO-OO", "OOOOOOOO", "OOOOOOOO"}
Returns: {"OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO" }
{"--------", "--------", "-------O", "--------", "--------", "--------", "-O---O--", "-------O"}
Returns: {"OO------", "--------", "-------O", "--------", "--------", "--------", "-O---O--", "-------O" }
{"OOOOOOOO", "OOOOOOOO", "OOOOO-OO", "OOOOOOOO", "OOO-OOOO", "OO--O-OO", "OOO-OOOO", "OOOOOOOO"}
Returns: {"OOOOOOOO", "OOOOOOOO", "OOOOO-OO", "OOOOOOOO", "OOOOOOOO", "OO-OOOOO", "OOOOOOOO", "OOOOOOOO" }
{"OO------", "-OO-----", "------OO", "O----OOO", "OO--O---", "-------O", "O-----O-", "OO------"}
Returns: {"OO------", "-OO-----", "------OO", "O---OOOO", "OO--O-OO", "------OO", "O-----O-", "OO------" }
{"OO-OOOOO", "OO-OOOOO", "OOOO--OO", "OOOO--OO", "OO-O--O-", "OOOOO-OO", "O-OOOOOO", "-OO-O-OO"}
Returns: {"OO-OOOOO", "OO-OOOOO", "OOOO--OO", "OOOOO-OO", "OO-O--O-", "OOOOO-OO", "O-OOOOOO", "-OOOOOOO" }
{"OO--OOOO", "OOOOOOOO", "O-OOOOOO", "OOOO-OOO", "--OOO-OO", "OOOOOOOO", "OO-OOOOO", "OOOOOOOO"}
Returns: {"OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO" }
{"OOOOO--O", "OOO-OOOO", "-O-OOOOO", "OOOOOO-O", "OOOO-OOO", "OOOO-OOO", "OOOO-OOO", "OO-OOOOO"}
Returns: {"OOOOO-OO", "OOO-OOOO", "-OOOOOOO", "OOOOOO-O", "OOOO-OOO", "OOOO-OOO", "OOOO-OOO", "OO-OOOOO" }
{"--OO---O", "-O-O----", "---OO-O-", "---O--OO", "O--O---O", "---O----", "---O-OOO", "-OO----O"}
Returns: {"--OO---O", "-O-O----", "O--OO-O-", "OO-O--OO", "OO-O---O", "---O----", "---O-OOO", "-OO----O" }
{"OOOOOOOO", "OOO--OOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO"}
Returns: {"OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO" }
{"O-OOOOOO", "-O-OOOOO", "O-OOOO-O", "OOOO-OO-", "OO-OO--O", "O-OOOOOO", "O-OOOOO-", "--O---OO"}
Returns: {"O-OOOOOO", "-O-OOOOO", "O-OOOO-O", "OOOO-OO-", "OO-OO--O", "O-OOOOOO", "OOOOOOO-", "OOO--OOO" }
{"O-OOOOOO", "OOOOOO-O", "OOO-OOOO", "OOOOOOOO", "OOOOOOO-", "-OOOO-OO", "OOOOOOO-", "OOOO-OOO"}
Returns: {"O-OOOOOO", "OOOOOO-O", "OOO-OOOO", "OOOOOOOO", "OOOOOOOO", "-OOOOOOO", "OOOOOOO-", "OOOO-OOO" }
{"--O-O--O", "--OOO-OO", "------O-", "O-OO---O", "--OO----", "---O-O-O", "------O-", "---O----"}
Returns: {"--O-O--O", "--OOO-OO", "------O-", "O-OO---O", "--OO----", "--OO-O-O", "OOO-O-O-", "O--O----" }
{"-OOOOOOO", "OOO-OOOO", "O-OOO-O-", "OOO-OOO-", "OOO--OO-", "-OOOO-O-", "O-OOOO--", "-O-O-OOO"}
Returns: {"-OOOOOOO", "OOO-OOOO", "O-OOO-O-", "OOO-OOO-", "OOO--OO-", "-OOOO-OO", "OOOOOOOO", "-OOO-OOO" }
{"--O---O-", "-----O--", "O---OO--", "--O-----", "-O---OO-", "------O-", "-------O", "--O-----"}
Returns: {"--O---O-", "-----O--", "O---OO--", "--O-----", "-O---OO-", "--OO--O-", "O------O", "--O-----" }
{"---O-O--", "-OO---O-", "-O---O-O", "-O-O---O", "--------", "--------", "O-OOO---", "-----O--"}
Returns: {"---O-O--", "-OO---O-", "-O---O-O", "-O-O---O", "--------", "--------", "O-OOO---", "--O--OO-" }
{"--------", "--------", "--------", "--------", "--------", "--------", "--------", "----O---"}
Returns: {"---O----", "--------", "--------", "--------", "--------", "--------", "--------", "----O---" }
{"OOO-OOOO", "-OOOOOOO", "--O--O--", "OO--O-OO", "-OOO-O--", "--OO-OOO", "O-OO-OOO", "OO-O-O-O"}
Returns: {"OOO-OOOO", "-OOOOOOO", "--O--O--", "OO--O-OO", "OOOO-O--", "-OOO-OOO", "O-OO-OOO", "OOOO-O-O" }
{"--------", "-O----O-", "OO--O---", "-O--OO--", "--O---O-", "-O-----O", "---O--O-", "-O------"}
Returns: {"--------", "-O----O-", "OO--O---", "-OO-OOOO", "--O---O-", "-O-----O", "---O--O-", "-O------" }
{"--OO---O", "--------", "O-OOO---", "-O--O---", "-OO-----", "O---OO--", "O-OOOOOO", "OO-OO---"}
Returns: {"--OOOOOO", "-----OOO", "O-OOO-O-", "-O--O---", "-OO-----", "O---OO--", "O-OOOOOO", "OO-OO---" }
{"--------", "--------", "--------", "--------", "--------", "--------", "--------", "--------"}
Returns: {"--------", "--------", "--------", "--------", "--------", "--------", "--------", "--------" }
{"O--OO-OO", "O-OOOO-O", "-O-OO-OO", "OO-OOOO-", "OOOOOOOO", "OOOOO-O-", "O-O-OO-O", "OOOOOO-O"}
Returns: {"O--OOOOO", "O-OOOO-O", "OO-OOOOO", "OO-OOOOO", "OOOOOOOO", "OOOOO-O-", "O-O-OO-O", "OOOOOO-O" }
{"--------", "--------", "----O-O-", "------O-", "-----O--", "--------", "--------", "-O------"}
Returns: {"--------", "--------", "----O-O-", "--O-O-O-", "O----O--", "--------", "--------", "-O------" }
{"-O------", "--------", "--------", "--O---O-", "O---OOO-", "--O--O-O", "-------O", "----OO--"}
Returns: {"-O------", "O-OOO---", "O-------", "--O---O-", "O---OOO-", "--O--O-O", "-------O", "----OO--" }
{"-OO-----", "O-------", "---OOOO-", "-----O-O", "-OO-OOOO", "---O-OO-", "------O-", "--O-O--O"}
Returns: {"OOO-----", "O-------", "O--OOOO-", "O----O-O", "-OO-OOOO", "O--O-OO-", "------O-", "--O-O--O" }
{"--O--OO-", "--------", "------O-", "--------", "------O-", "-O-O---O", "-OO-----", "O-------"}
Returns: {"--O--OO-", "--------", "---O--O-", "--------", "------O-", "-O-O---O", "-OO-----", "O-------" }
{"O-OO----", "OO-----O", "-O-----O", "O-O----O", "----OOO-", "O-OOO--O", "-O-OOOOO", "---OO--O"}
Returns: {"OOOO-O--", "OOOO---O", "-O-----O", "O-O----O", "----OOO-", "O-OOO--O", "-O-OOOOO", "---OO--O" }
{"-O--OO-O", "O-O--O-O", "OOO-OO--", "OO-O--O-", "OO-OO-OO", "----O---", "OOOO-OO-", "--O-----"}
Returns: {"-O--OO-O", "O-O--O-O", "OOO-OO--", "OO-O--O-", "OO-OO-OO", "----OOOO", "OOOO-OOO", "--O-O---" }
{"OOO-OOOO", "O-O-OOOO", "OO-OOOOO", "OOOO-OOO", "OOOOOOO-", "OOOOOOOO", "OOOO-O-O", "OOOOOOOO"}
Returns: {"OOOOOOOO", "O-O-OOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOO-O-O", "OOOOOOOO" }
{"----O---", "--O-O---", "--------", "-O------", "O-------", "--------", "--------", "---OO---"}
Returns: {"----O---", "--O-O---", "--------", "-O------", "O---O-OO", "--------", "--------", "---OO---" }
{"-OOOOOOO", "OOOOOO-O", "OOO---OO", "OOO--OOO", "OOOOOOOO", "OOO-OOOO", "OOOOOO-O", "OO-OOOOO"}
Returns: {"-OOOOOOO", "OOOOOO-O", "OOOO-OOO", "OOOOOOOO", "OOOOOOOO", "OOO-OOOO", "OOOOOO-O", "OO-OOOOO" }
{"-O-O----", "--------", "--------", "------OO", "--OO----", "-----OO-", "-O-O----", "-------O"}
Returns: {"-O-O----", "--------", "O-OO----", "------OO", "--OO----", "-----OO-", "-O-O----", "-------O" }
{"-O------", "--O-----", "-OO--O--", "--------", "---OO---", "OO------", "--------", "------OO"}
Returns: {"-O------", "--O-----", "-OO--O--", "-----O-O", "---OOO--", "OO------", "--------", "------OO" }
{"--OOOOOO", "OOO-OOOO", "OOOOOOOO", "OOOO-OOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "-OOOOOO-"}
Returns: {"-OOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOO-" }
{"-----O--", "-OO-----", "--------", "--------", "--------", "---O----", "----O---", "---O----"}
Returns: {"-----O--", "-OO-----", "--------", "--------", "----O-O-", "---O----", "----O---", "---O----" }
{"-OO--OO-", "O----O--", "O--O----", "O---O---", "-OO--O--", "-------O", "-O-O----", "---O---O"}
Returns: {"-OO--OO-", "O----O--", "O--O----", "O---O---", "-OO--O--", "-----OOO", "-O-O-OO-", "---O---O" }
{"OOO-O---", "OO-OOO--", "OOOOOOOO", "OOO-OO-O", "OOOOO--O", "OOOOOO--", "-OOOOOOO", "OOOO--O-"}
Returns: {"OOO-O-OO", "OO-OOOOO", "OOOOOOOO", "OOO-OOOO", "OOOOOO-O", "OOOOOOOO", "-OOOOOOO", "OOOO--OO" }
{"--OOOOOO", "O---O--O", "----OOOO", "-O----O-", "OO---O--", "--OO-O--", "-OO-OOOO", "--OOOOO-"}
Returns: {"--OOOOOO", "O---O--O", "OOO-OOOO", "OO----O-", "OOO--O--", "O-OO-O--", "-OO-OOOO", "--OOOOO-" }
{"--------", "---O----", "--------", "--------", "--------", "--------", "--------", "--------"}
Returns: {"--------", "---O----", "--------", "--------", "--------", "--------", "----O---", "--------" }
{"--OO--OO", "------O-", "-O------", "----OO--", "OO---OO-", "O-OO----", "-O-----O", "OOO-OO--"}
Returns: {"--OO-OOO", "-----OOO", "-O-O----", "----OO--", "OO---OO-", "O-OO----", "-O-----O", "OOO-OO--" }
{"OOOOOOOO", "OO-OOOOO", "OOOOOOOO", "OOOOOO-O", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO"}
Returns: {"OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO", "OOOOOOOO" }
{"-O-----O", "--------", "---O----", "O-O-O-O-", "--O-----", "--------", "--O-----", "O----OO-"}
Returns: {"-O-----O", "--------", "---O-OO-", "O-O-O-O-", "--O-----", "--------", "--O-----", "O----OO-" }
{"OOO-OOO-", "O-OOOOOO", "OOO-OOOO", "OOOO-OOO", "OOOO---O", "O-O--OOO", "O--OO---", "OO--OOO-"}
Returns: {"OOO-OOO-", "O-OOOOOO", "OOO-OOOO", "OOOO-OOO", "OOOO---O", "O-O-OOOO", "OOOOOOOO", "OO--OOOO" }
{"OOOOO--O", "OOOO--O-", "OOOO--O-", "OOO-O---", "-O-O---O", "-O---O--", "O-O-----", "--------"}
Returns: {"OOOOO--O", "OOOO--O-", "OOOO--O-", "OOO-O--O", "-O-O-OOO", "-O---OOO", "O-OOOOOO", "--O-OOOO" }
{"----OO--", "--O-----", "OOO-----", "---OO-O-", "O---O---", "O-O---O-", "O---OOO-", "OO--O---"}
Returns: {"----OO-O", "--O----O", "OOO--OOO", "---OO-O-", "O---O---", "O-O---O-", "O---OOO-", "OO--O---" }
{"OOOOO-OO", "OOOO-OOO", "O-O-O---", "OOOO----", "O-O--O--", "OOO-O---", "OOO-O---", "----O---"}
Returns: {"OOOOO-OO", "OOOO-OOO", "O-O-O--O", "OOOO---O", "O-O--OOO", "OOO-OOOO", "OOOOOOOO", "--OOO-OO" }
{"--------", "----O-O-", "--O-OOO-", "--O--OOO", "--O-OO-O", "--OO--OO", "--OOOOOO", "O--OOOOO"}
Returns: {"OOOO-O--", "OOOOO-O-", "OOO-OOO-", "OOO--OOO", "O-O-OO-O", "--OO--OO", "--OOOOOO", "O--OOOOO" }
{"--------", "O----OOO", "--O--OO-", "----O-O-", "-----OOO", "--O---O-", "--OO--OO", "-----O--"}
Returns: {"O-------", "O----OOO", "OOO--OO-", "O---O-O-", "O----OOO", "O-O---O-", "O-OO--OO", "-----O--" }
{"O---O-OO", "-O---OOO", "O-O----O", "------OO", "O-------", "----OOO-", "-----O-O", "---O----"}
Returns: {"O---O-OO", "-O---OOO", "O-O----O", "------OO", "O---O---", "OOO-OOO-", "OOO--O-O", "O--O----" }
{"-OO-----", "OOO-O-O-", "-------O", "O-OOOO--", "O-OOO---", "OOO-O---", "OO-OO---", "OOOO--O-"}
Returns: {"-OO---OO", "OOO-OOOO", "-----OOO", "O-OOOOOO", "O-OOO-OO", "OOO-OO-O", "OO-OO---", "OOOO--O-" }
{"O--O-O--", "-O-OO---", "O---O---", "-OOO----", "O-------", "O-------", "-O------", "--------"}
Returns: {"O--O-O--", "-O-OO---", "O---O---", "-OOO----", "O------O", "O-----OO", "-O---OOO", "-----O-O" }
{"----OOOO", "----OO-O", "-O-OOOOO", "--OOO-OO", "--O-O-O-", "--O-O-OO", "---OOO-O", "--------"}
Returns: {"----OOOO", "----OO-O", "OO-OOOOO", "OOOOO-OO", "OOOOO-O-", "OOOOO-OO", "OO-OOO-O", "OO------" }
{"--------", "----O-OO", "--O--O--", "----OOOO", "-O--OOOO", "-O-O-OOO", "O----O-O", "-OOOOOOO"}
Returns: {"OOOO----", "OOO-O-OO", "OOOOOO--", "OOOOOOOO", "-O--OOOO", "-O-O-OOO", "O----O-O", "-OOOOOOO" }
{"--------", "--------", "-------O", "--------", "--------", "-O-OO---", "--------", "---OO---"}
Returns: {"--------", "-O-OOO--", "-------O", "--------", "--------", "-O-OO---", "--------", "---OO---" }
{"O-OO--OO", "OOO-O---", "O-OO-O--", "O-OO-O--", "--------", "--O-----", "OO---O--", "--------"}
Returns: {"O-OO--OO", "OOO-O---", "O-OO-O--", "O-OO-O--", "-------O", "--O--OOO", "OO--OOOO", "--O-OOO-" }
{"--------", "---O--O-", "-----OO-", "--O--O--", "--OOO-OO", "O-OOO-OO", "--OOOOOO", "---OOO--"}
Returns: {"OOO-OO--", "OOOO--O-", "OO---OO-", "--O--O--", "--OOO-OO", "O-OOO-OO", "--OOOOOO", "---OOO--" }
{"OOOOO--O", "O--O--OO", "O--O----", "-O-O-OOO", "-O------", "O-------", "-O------", "--------"}
Returns: {"OOOOO--O", "O--O--OO", "O--O----", "-O-O-OOO", "-O------", "O-------", "-O---OOO", "O-OOOOOO" }
{"--OO---O", "--O--OO-", "---OOO-O", "-------O", "---OOO--", "----OO--", "--------", "-------O"}
Returns: {"--OO---O", "--O--OO-", "---OOO-O", "-------O", "---OOO--", "OOO-OO--", "OO------", "OO-----O" }
{"O-------", "--------", "O-------", "-----O--", "OO-O--O-", "O-------", "O-------", "-O--O---"}
Returns: {"O-------", "-------O", "O----OOO", "-----OOO", "OO-O-OO-", "O-------", "O-------", "-O--O---" }
{"-----O--", "---O---O", "---O----", "-O-OOOO-", "---OO-OO", "------O-", "-OOO-O-O", "-OOOOOOO"}
Returns: {"OOO-OOO-", "OOOO---O", "OO-O----", "-O-OOOO-", "---OO-OO", "------O-", "-OOO-O-O", "-OOOOOOO" }
{"---OOOOO", "----OOOO", "-OO-OOOO", "-OO--OO-", "O-OO-O--", "--O---OO", "--OOOO--", "--O-----"}
Returns: {"---OOOOO", "----OOOO", "-OO-OOOO", "-OO--OO-", "O-OO-O--", "OOO---OO", "OOOOOO--", "OOOO----" }
{"--------", "----OO--", "-----O--", "-------O", "-----O--", "----OO--", "-----OOO", "-------O"}
Returns: {"--------", "OO--OO--", "OO---O--", "O------O", "OO---O--", "----OO--", "-----OOO", "-------O" }
{"---O----", "-------O", "-OO-O--O", "----OO-O", "---O--OO", "O--OOOOO", "---OOOOO", "OO--OOOO"}
Returns: {"OOOO--O-", "OOOOO--O", "OOOOO--O", "OOO-OO-O", "O--O--OO", "O--OOOOO", "---OOOOO", "OO--OOOO" }
{"---O--OO", "------O-", "-O------", "----O-O-", "-OO-OO-O", "---O-O--", "-O-OO--O", "---O-OOO"}
Returns: {"OO-O--OO", "OO----O-", "OO------", "O---O-O-", "-OO-OO-O", "---O-O--", "-O-OO--O", "---O-OOO" }
{"OOOOO-OO", "OOOO-OOO", "OOOO----", "OOOOOO--", "O-O-----", "O---O---", "OO--O---", "--------"}
Returns: {"OOOOO-OO", "OOOO-OOO", "OOOO----", "OOOOOO-O", "O-O-OOOO", "O---OOOO", "OOOOOOOO", "-O-OOOOO" }
{"-------O", "-------O", "-O--OOOO", "-----O-O", "--O-OOOO", "-OO-O-OO", "-O-O-OOO", "--O-O-OO"}
Returns: {"OOO----O", "OOOO---O", "OOO-OOOO", "OO---O-O", "OOO-OOOO", "OOO-O-OO", "-O-O-OOO", "--O-O-OO" }
{"-O------", "----OO--", "---O--O-", "---OOO--", "-O-OOOOO", "----OOOO", "O--OOO-O", "--OOO-OO"}
Returns: {"OOOO----", "OOO-OO--", "OOOOOOO-", "O--OOO--", "-O-OOOOO", "----OOOO", "O--OOO-O", "--OOO-OO" }
{"--------", "--------", "--------", "O-------", "--------", "-O------", "O-------", "OO-O----"}
Returns: {"-------O", "-----OOO", "-----O-O", "O-------", "--------", "-O------", "O-------", "OO-O----" }
{"OOO-O---", "OOO---O-", "OOO-OO--", "OOOOO---", "-OO-OOO-", "O---O---", "O---OOO-", "OO--OO--"}
Returns: {"OOO-O---", "OOO---OO", "OOO-OOOO", "OOOOO-OO", "-OO-OOOO", "O--OO-OO", "O---OOOO", "OO--OOO-" }
{"---O-OOO", "----OOOO", "-O---OO-", "----O--O", "O-------", "-------O", "-----O-O", "--------"}
Returns: {"---O-OOO", "----OOOO", "-O---OO-", "----O--O", "OOO-----", "OOO----O", "OOOO-O-O", "OO------" }
{"-------O", "-O--O---", "-O----O-", "--------", "--------", "--------", "------O-", "--------"}
Returns: {"-------O", "-O--O---", "-O----O-", "--------", "--------", "-------O", "OOO---O-", "--------" }
{"--OOOO-O", "-OO-O-OO", "-----OO-", "--------", "-----O--", "------O-", "--------", "--------"}
Returns: {"--OOOO-O", "-OO-O-OO", "-----OO-", "--------", "-----O--", "------O-", "OOOO----", "OOOOOO--" }
{"--OO----", "---O----", "---OO---", "O----O--", "-O------", "OO-O--O-", "OOO-OO-O", "OO------"}
Returns: {"--OO---O", "---O-OOO", "---OO-OO", "O--O-OO-", "-O------", "OO-O--O-", "OOO-OO-O", "OO------" }
{"OOOO-O--", "OO-O--O-", "O-O-OOO-", "O-OO---O", "O---O---", "------O-", "--------", "-O------"}
Returns: {"OOOO-O--", "OO-O--O-", "O-O-OOO-", "O-OO---O", "O---O---", "----OOOO", "---OOOOO", "-OO-OOO-" }
{"O-OOOOOO", "---OOOOO", "O-OOOOO-", "--O----O", "--OOOOOO", "--O--OOO", "-------O", "--O---O-"}
Returns: {"O-OOOOOO", "---OOOOO", "O-OOOOO-", "O-O----O", "O-OOOOOO", "OOOO-OOO", "OOOO---O", "OOOOO-O-" }
{"--OO----", "-OOOO---", "-O-O-O--", "O-------", "-OO-----", "--OO----", "----O-O-", "--O-----"}
Returns: {"--OO----", "-OOOO---", "-O-O-O--", "O-------", "-OO----O", "--OO--OO", "----O-OO", "--O---O-" }
{"O----O--", "O---O---", "---OOO-O", "-O-OOO--", "-O------", "OOOOO--O", "OOO--O--", "OOOOOO--"}
Returns: {"O---OOOO", "O--OOO-O", "---OOOOO", "-O-OOOOO", "-O------", "OOOOO--O", "OOO--O--", "OOOOOO--" }
{"-OO-OOOO", "----OOO-", "-OOOOOO-", "----OOOO", "--O-----", "-O----O-", "----O---", "--O-O---"}
Returns: {"-OO-OOOO", "----OOO-", "-OOOOOO-", "----OOOO", "--O-----", "OOO-O-O-", "OOOOOOO-", "OOO-O---" }
{"----OOOO", "--O--OOO", "-O--OOOO", "-----O-O", "-----OOO", "---O-OO-", "-O---OOO", "-----O--"}
Returns: {"----OOOO", "OOO--OOO", "OO--OOOO", "OO---O-O", "OOO--OOO", "OOOO-OO-", "OOOO-OOO", "OO---O--" }
{"-----O--", "-----OO-", "----O-OO", "--O-O-OO", "-OOOOOOO", "OOOOOOO-", "--O--O-O", "OO--OOOO"}
Returns: {"OOO--O--", "OOOOOOO-", "OOO-O-OO", "--O-O-OO", "-OOOOOOO", "OOOOOOO-", "--O--O-O", "OO--OOOO" }
{"O-O-OO-O", "-O---O--", "-O---O--", "--------", "------OO", "--------", "--------", "--------"}
Returns: {"O-O-OO-O", "-O---O--", "-O---O--", "--------", "------OO", "--------", "OO-OOOOO", "OO------" }
{"--------", "-OO---O-", "--O---O-", "OOOO----", "OOOO---O", "O-OOOO--", "OOOO-O--", "-OOOOOO-"}
Returns: {"---OOOOO", "-OO-OOOO", "--O-OOOO", "OOOOOOO-", "OOOO---O", "O-OOOO--", "OOOO-O--", "-OOOOOO-" }
{"--------", "---O-O--", "--O-----", "------O-", "-----O-O", "--O----O", "-O---O-O", "----O-O-"}
Returns: {"-O------", "OO-O-O--", "OOO-----", "------O-", "-----O-O", "--O----O", "-O---O-O", "----O-O-" }
{"-----O--", "---O----", "OOOO----", "OOO-----", "-OOOO-O-", "-OOOO--O", "OOOOO---", "OOOOOOO-"}
Returns: {"--OOOOOO", "---OOOOO", "OOOO-OOO", "OOO--OOO", "-OOOO-O-", "-OOOO--O", "OOOOO---", "OOOOOOO-" }
{"--O---O-", "--O---O-", "--OO-OOO", "---OO--O", "O-O-OOOO", "----OOOO", "---OOOOO", "--O-OO-O"}
Returns: {"OOO---O-", "OOO---O-", "OOOOOOOO", "OOOOO--O", "OOO-OOOO", "OO--OOOO", "---OOOOO", "--O-OO-O" }
{"-OO-OO--", "-OOOOO-O", "OO-O----", "--OO-O--", "O-O-----", "O-O-----", "---O----", "O---O---"}
Returns: {"-OO-OO--", "-OOOOO-O", "OO-O----", "--OO-O--", "O-O----O", "O-O---OO", "---O-OOO", "O--OOO-O" }
{"---OOOOO", "---O-OO-", "---O-OOO", "--OOOO--", "O----OOO", "-OO-OO--", "-------O", "--------"}
Returns: {"---OOOOO", "---O-OO-", "---O-OOO", "O-OOOO--", "OO---OOO", "OOOOOO--", "OOOOO--O", "OO------" }
{"--------", "O--O----", "-O-O----", "OOOOOOO-", "OOOOOOOO", "OOOO----", "OOOOO-O-", "-OOOO---"}
Returns: {"----OOOO", "O--OOOOO", "-O-O-OOO", "OOOOOOOO", "OOOOOOOO", "OOOOO---", "OOOOO-O-", "-OOOO---" }
{"OOOOOOO-", "OOOOO-O-", "OOO-OOO-", "OOOO-O--", "O-O-OO--", "-OO-----", "O-O-----", "--------"}
Returns: {"OOOOOOO-", "OOOOO-O-", "OOO-OOO-", "OOOO-OOO", "O-O-OOOO", "-OOOOOOO", "O-OOOOOO", "-OOO-OOO" }
{"--O---O-", "-----OO-", "OO----O-", "OO-O---O", "-----O-O", "-----O-O", "---O----", "--------"}
Returns: {"--O---O-", "-----OO-", "OO----O-", "OO-O---O", "-----O-O", "-----O-O", "-O-OO---", "OO------" }
{"--------", "--------", "--------", "--------", "--------", "--O-----", "O-------", "---O----"}
Returns: {"--------", "----OO-O", "--------", "--------", "--------", "--O-----", "O-------", "---O----" }
{"OOOO-O--", "O-OOOO--", "OOO--OOO", "O-OOOO--", "-OO-O--O", "--OO--O-", "O-OOO---", "--------"}
Returns: {"OOOO-O--", "O-OOOO--", "OOO--OOO", "O-OOOO--", "-OO-O-OO", "--OO-OOO", "O-OOOOOO", "--O-OOO-" }
{"-OOOOOOO", "O---O-OO", "-OO-OOOO", "-O--O-OO", "O--OO-OO", "----OO-O", "-----OO-", "--------"}
Returns: {"-OOOOOOO", "O---O-OO", "-OO-OOOO", "-O--O-OO", "OOOOO-OO", "OOOOOO-O", "OOOOOOO-", "OOO-O---" }