Problem Statement
You are given an
Return a
The shapes must not overlap in the reconstructed square or extend outside its boundary.
Definition
- Class:
- Shapes
- Method:
- reconstructSquare
- Parameters:
- int, String[], String[], String[], String[], String[]
- Returns:
- String[]
- Method signature:
- String[] reconstructSquare(int L, String[] s1, String[] s2, String[] s3, String[] s4, String[] s5)
- (be sure your method is public)
Constraints
- L will be between 3 and 10, inclusive.
- s1, s2, s3, s4 and s5 will each contain between 1 and L elements, inclusive.
- Each element of s1, s2, s3, s4 and s5 will contain between 1 and L characters, inclusive.
- Within each of s1, s2, s3, s4 and s5, every element will contain the same number of characters.
- Each character in s1, s2, s3, s4 and s5 will be either a '#' or a '.'.
- The first and last rows of s1, s2, s3, s4 and s5 will each contain at least 1 '#' character.
- The first and last columns of s1, s2, s3, s4 and s5 will each contain at least 1 '#' character.
- The '#' characters in each of s1, s2, s3, s4 and s5 will be connected.
Examples
5
{"#####"}
{"#####"}
{"#####"}
{"#####"}
{"#####"}
Returns: {"11111", "22222", "33333", "44444", "55555" }
Here your friend cut the paper into strips. There are many ways that the square could be reconstructed, so we choose the lexicographically earliest.
10
{"##" ,"##"}
{"########" ,"#......#" ,"#......#" ,"#......#" ,"#......#" ,"#......#" ,"#......#" ,"########"}
{"######" ,"#....#" ,"#....#" ,"#....#" ,"#....#" ,"######"}
{"####" ,"#..#" ,"#..#" ,"####"}
{"##########" ,"#........#" ,"#........#" ,"#........#" ,"#........#" ,"#........#" ,"#........#" ,"#........#" ,"#........#" ,"##########"}
Returns: {"5555555555", "5222222225", "5233333325", "5234444325", "5234114325", "5234114325", "5234444325", "5233333325", "5222222225", "5555555555" }
This time your friend cut up the paper into rings.
8
{"#....." ,"######" ,"######"}
{".###" ,"####" ,"####"}
{"###.." ,"###.." ,"##..." ,"####." ,"#####" ,".####"}
{".#" ,".#" ,".#" ,"##" ,"##"}
{"####." ,"#####" ,"..###"}
Returns: {"CHEAT" }
These shapes cannot form a square.
5
{"#####"}
{"#####"}
{"#####","#####"}
{"#####"}
{"#####"}
Returns: {"CHEAT" }
10
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","####."}
{"#"}
Returns: {"1111122222", "1111122222", "1111122222", "1111122222", "1111122222", "3333344444", "3333344444", "3333344444", "3333344444", "3333344445" }
10
{"#"}
{"#"}
{"#"}
{"#"}
{"##########","##########","##########","##########","##########","##########","##########","##########","########..","########.."}
Returns: {"5555555555", "5555555555", "5555555555", "5555555555", "5555555555", "5555555555", "5555555555", "5555555555", "5555555512", "5555555534" }
10
{"#"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","####."}
Returns: {"2222233333", "2222233333", "2222233333", "2222233333", "2222233333", "4444455555", "4444455555", "4444455555", "4444455555", "4444455551" }
10
{"##","##"}
{"##","##"}
{"##","##"}
{"##","##"}
{"##########","##########","##########","##########","##########","##########","######....","######....","######....","######...."}
Returns: {"5555555555", "5555555555", "5555555555", "5555555555", "5555555555", "5555555555", "5555551122", "5555551122", "5555553344", "5555553344" }
10
{"####","####","####","####"}
{"####","####","####","####"}
{"####","####","####","####"}
{"####","####","####","####"}
{"##########","##########","##........","##........","##........","##........","##........","##........","##........","##........"}
Returns: {"5555555555", "5555555555", "5511112222", "5511112222", "5511112222", "5511112222", "5533334444", "5533334444", "5533334444", "5533334444" }
10
{"..#",".##","###"}
{"####","####","####","####","####","###.","###.","#..."}
{"#"}
{"######","######","######","#..###","..####"}
{"......####","...#######",".#########","##########","##########"}
Returns: {"2222444444", "2222444444", "2222444444", "2222413444", "2222114444", "2221115555", "2225555555", "2555555555", "5555555555", "5555555555" }
10
{".#...",".###.","#####","..###","..###"}
{"###","..#"}
{".###...","####...","#######","#######","#######",".######","..#####"}
{"..#..","###..","###..","###..","####.","#####"}
{"######","######","#####.","####..","##...."}
Returns: {"5555551222", "5555551112", "5555511111", "5555333111", "5543333111", "4443333333", "4443333333", "4443333333", "4444333333", "4444433333" }
10
{"#####","#.##.","..##."}
{"..##","..##","###.","###.","###."}
{"#####","#####",".####","..###","...##"}
{".#..#..","##..##.","#######","######.","##...#.","##....."}
{"...##..",".#.####",".######","#######","#######","#######"}
Returns: {"1111133333", "1411433333", "4411443333", "4444444333", "4444445533", "4422545555", "4422555555", "2225555555", "2225555555", "2225555555" }
10
{"####.","####.","####.","#####","#####","####."}
{".###..","####..",".####.",".#####","######"}
{"#####","#####","#####","#####","....#","....#"}
{"####","##..","##..","#...","#..."}
{"...#",".###",".###","####","####","..##","..##","...#"}
Returns: {"3333344445", "3333344555", "3333344555", "3333345555", "1111345555", "1111322255", "1111222255", "1111122225", "1111122222", "1111222222" }
10
{"##","##"}
{"#..","###","##.","#.."}
{"....#",".####",".####",".####","#####",".####","#####","#####","#####","#####"}
{"#########","######...","######...","######...",".####...."}
{"..###",".###.","####.",".###.",".###."}
Returns: {"4444444443", "4444443333", "4444443333", "4444443333", "2444433333", "2225553333", "2255533333", "2555533333", "1155533333", "1155533333" }
10
{".##","###",".##"}
{"####..","####..","######","######","..###."}
{"......####",".....#####","#....#####","#.########","##########"}
{"####..","###...","..##..","..####",".#####"}
{"##....","######","#####.",".####.",".#...."}
Returns: {"2222444411", "2222444111", "2222224411", "2222224444", "5522244444", "5555553333", "5555533333", "3555533333", "3533333333", "3333333333" }
10
{"####",".###",".###","..##","...#"}
{"##......","###.....","###.....","####....","######..","######..","########","#######.","..#####.","..######"}
{"##"}
{"##","##"}
{"##......",".####...",".####...","..####..","....###.","....####","......##",".....###",".....###","......##"}
Returns: {"2255331111", "2225555111", "2225555111", "2222555511", "2222225551", "2222225555", "2222222255", "2222222555", "4422222555", "4422222255" }
10
{"######",".##.##",".....#"}
{"#...","##..","##..","###.","####","####","#..."}
{"##....",".##...","..##..","..###.","...##.","....##","....##",".####."}
{"...#..","..###.","######","######",".#####",".#####","..####","..####",".#####"}
{"####..","#####.","..####","...#.."}
Returns: {"5555111111", "5555511411", "3355554441", "2335444444", "2233444444", "2233344444", "2223344444", "2222334444", "2222334444", "2333344444" }
10
{".........#","........##","......####",".....#####","....######","##########","##########","##########"}
{"..#.","..#.","..##","###."}
{"#..","###","###","###","#.."}
{"#######",".######",".#####.",".####..",".##...."}
{"###.","####",".###"}
Returns: {"5554444444", "5555444444", "3555444441", "3332444411", "3332441111", "3332211111", "3222111111", "1111111111", "1111111111", "1111111111" }
10
{"....##..#.","...#######","..########","..########","##########"}
{"####",".###",".###","..#.","..#."}
{"####","#...","#..."}
{"..###","..###","#####","#####",".##.#"}
{"##..","###.","###.","####","####","####","###.","##..","##.."}
Returns: {"5522223333", "5552223444", "5552223444", "5555244444", "5555244444", "5555114414", "5551111111", "5511111111", "5511111111", "1111111111" }
10
{".##",".##",".##",".##",".##","###",".##"}
{".##..",".##..",".#...",".###.","#####"}
{"##########","..########","..########","...#####..","....####..","......##..","......##..",".....###.."}
{"##..","##..","###.","####","####","####","###.","###.","###."}
{"#","#"}
Returns: {"3333333333", "4433333333", "4433333333", "4443333311", "4444333311", "4444223311", "4444223311", "4445233311", "4445222111", "4442222211" }
10
{"###..","####.","#####","..#.."}
{"#..","#..","#..","###","###","##.","###","###","###","##."}
{"####.",".####",".####",".####","####."}
{"####","####",".###",".###",".###","####"}
{".######","..#####","...####",".######","###...."}
Returns: {"2111555555", "2111155555", "2111115555", "2221555555", "2225554444", "2233334444", "2223333444", "2223333444", "2223333444", "2233334444" }
10
{"..#.","..##","####","####"}
{"####","####","####","####",".###","####","##.#","##.."}
{"#.....","####..","######","######","######","######"}
{"##","##","#.","#."}
{".####.",".####.","#####.","#####.","######","...##."}
Returns: {"4455552222", "4455552222", "4555552222", "4555552222", "3555555222", "3333552222", "3333332212", "3333332211", "3333331111", "3333331111" }
10
{"......#.","......#.","#######.","########"}
{"#####","#####","####.","####.","####.","####.","###..","###.."}
{".###",".###","####","####","####","####",".###"}
{"###","###",".##"}
{"..##","..##",".##.",".##.",".##.",".##.","###.","###."}
Returns: {"2222255333", "2222255333", "2222553333", "2222553333", "2222553333", "2222553333", "2225551333", "2225551444", "1111111444", "1111111144" }
10
{"##"}
{"##...","#####",".###.",".###.","...#."}
{"#","#","#","#"}
{"#.........","#.........","###.......","##########",".#########",".#########",".#########",".#########"}
{"######",".#####","######","######","######"}
Returns: {"2211555555", "2222255555", "4222555555", "4222555555", "4442555555", "4444444444", "3444444444", "3444444444", "3444444444", "3444444444" }
10
{".....#.",".###.##","#######","#######","#######"}
{"#..","###","###","###"}
{"#","#","#"}
{".####",".###.","####.",".###.",".####",".##.#","..#.."}
{"######","######","#####.","######","######","######",".###.."}
Returns: {"5555554444", "5555554443", "5555544443", "5555554443", "5555554444", "5555554414", "2555111411", "2221111111", "2221111111", "2221111111" }
10
{"####","##..","#..."}
{".##","###","###","..#"}
{"##........","######....","######....","##########","##########"}
{"...####",".#####.","####...","#.#...."}
{".....##...","#.#.#####.","##########","..########","......####","......####"}
Returns: {"1111444422", "1144444222", "1444455222", "5454555552", "5555555555", "3355555555", "3333335555", "3333335555", "3333333333", "3333333333" }
10
{"..#..","###..","#####"}
{"....###","....###","....###","...####",".#.####","#######","###..##","#.....#"}
{"#"}
{"##########","#######...","#######...","#######...","######....","####......","###.......","##........"}
{"..##..","#####.",".#####"}
Returns: {"4444444444", "4444444222", "4444444222", "4444444222", "4444442222", "4444232222", "4442222222", "4412225522", "1112555552", "1111155555" }
10
{"#","#"}
{".....###..",".#...####.",".#..######","##########"}
{"..#..","####.","#####","#####","..###","..##."}
{"#####","#####","####.","##.#."}
{".#####",".#####","######","######","######",".#####","....##",".....#"}
Returns: {"4444455555", "4444455555", "4444555555", "4434555555", "3333555555", "3333355555", "3333322255", "1233322225", "1233222222", "2222222222" }
10
{"####","####","####","#..."}
{"###"}
{"########","#######.","#.#####.","..#####.",".....#.."}
{".#....","##....","#####.","######"}
{"....##","...###","...###","...###","..####","..####","######","######","######","######"}
Returns: {"3333333355", "3333333555", "3433333555", "4433333555", "4444435555", "4444445555", "1111555555", "1111555555", "1111555555", "1222555555" }
6
{"##","##","##"}
{"#","#","#"}
{"#####","#####","..###"}
{"##","##","##"}
{"##","##","##","##"}
Returns: {"333332", "333332", "553332", "551144", "551144", "551144" }
6
{"...##","..###","...##","#####"}
{"#"}
{"..#","###","###","##.","#.."}
{"#"}
{"######","##.###","...#.."}
Returns: {"555555", "553555", "333511", "333111", "332411", "311111" }
6
{"##",".#"}
{".#","##","##","##"}
{"##.","###","###","##."}
{"...#..","..##..","######","######"}
{"#"}
Returns: {"331152", "333122", "333422", "334422", "444444", "444444" }
8
{"...#.","...#.","#####","#####"}
{".##.","####","..##"}
{"#######","#######","####...","###....","###....","###...."}
{"#..","##.",".##",".##"}
{".#",".#","##",".#",".#","##",".#",".#"}
Returns: {"33333335", "33333335", "33332255", "33322225", "33314225", "33314455", "11111445", "11111445" }
8
{"#"}
{"########","########","########","######.#","..####..",".####...","#####...","##......"}
{".....#","...###","...###","######"}
{"#","#"}
{"#","#"}
Returns: {"22222222", "22222222", "22222222", "22222242", "51222243", "52222333", "22222333", "22333333" }
8
{"##.....",".#####.","....###"}
{"#....","####.","####.","####.","#####","..###","..###"}
{".###","..##","...#","####","####",".###",".###",".###"}
{"##","##"}
{"###"}
Returns: {"11555333", "21111133", "22221113", "22223333", "22223333", "22222333", "44222333", "44222333" }
10
{"##","##","##"}
{"########","#####.##","########","#######.",".#####..","..#....."}
{"###"}
{".##.","####","####","####",".###",".###",".###"}
{"#......","##.###.","#######","#######","#######","..#####"}
Returns: {"CHEAT" }
10
{"#.","##","##"}
{"#####","#####",".###."}
{"#####","#####",".####",".####",".####",".####","..###","..###","...##"}
{"...##....",".####....",".####....","#####....","######...","######...","#######..","..#######"}
{"##","##","#.","##"}
Returns: {"CHEAT" }
10
{"######....","#####.....","#######...","#######...","#######.##",".#########","....######",".....#####","........#."}
{"#"}
{"..####....","#####.##.#","###.######"}
{"#...","####","##.."}
{".####","#####","..###","..###","..#.."}
Returns: {"CHEAT" }
10
{"###","###",".##","..#"}
{"########","..######","...#####","..######","...##.##","...#..##"}
{"##.....","##.....","##.....","###....","####...","#####..","######.","##.####","#####..","#......"}
{"...#..","..##..","..####","...###",".#####","######"}
{"##"}
Returns: {"CHEAT" }
10
{"....###","...####","...####","..#####","..#####","..#####","#######","#######",".######","...####"}
{"#####","####.","####.",".#.#."}
{"##","##","##","#."}
{"###","#.#"}
{".##...","#####.","#####.","###...","###...","..##..","...###"}
Returns: {"CHEAT" }
10
{"..##","####","####","###."}
{"##..",".##.","###.",".###","####"}
{"#.","##","##"}
{".###",".###",".###","####","#.##","####","####","####",".###",".###"}
{"#######","#######","#######","######.",".#####.","..##..."}
Returns: {"CHEAT" }
10
{"..#.","####"}
{"#....","#####","#####","###.."}
{".....#","....##","....##","...###","...###","######","..####","...###"}
{"######","###.##","#####.",".###.."}
{"####....","####....","####....","#####...","########","#######.",".######."}
Returns: {"CHEAT" }
10
{"#"}
{"#"}
{"#"}
{"#"}
{"#"}
Returns: {"CHEAT" }
10
{"####","####","####","####"}
{"####","####","####","####"}
{"##........","##........","##........","##........","##........","##........","##........","##........","##########","##########"}
{"####","####","####","####"}
{"####","####","####","####"}
Returns: {"3311112222", "3311112222", "3311112222", "3311112222", "3344445555", "3344445555", "3344445555", "3344445555", "3333333333", "3333333333" }
10
{"####","####","####","####"}
{"####","####","####","####"}
{"####","####","####","####"}
{"####","####","####","####"}
{"##........","##........","##........","##........","##........","##........","##........","##........","##########","##########"}
Returns: {"5511112222", "5511112222", "5511112222", "5511112222", "5533334444", "5533334444", "5533334444", "5533334444", "5555555555", "5555555555" }
10
{"#"}
{"##########","##########","##########","##########","##########","##########","##########","##########","########..","########.."}
{"#"}
{"#"}
{"#"}
Returns: {"2222222222", "2222222222", "2222222222", "2222222222", "2222222222", "2222222222", "2222222222", "2222222222", "2222222213", "2222222245" }
10
{"#"}
{"#"}
{"#"}
{"#"}
{"##########","##########","##########","##########","##########","##########","##########","##########","########..","########.."}
Returns: {"5555555555", "5555555555", "5555555555", "5555555555", "5555555555", "5555555555", "5555555555", "5555555555", "5555555512", "5555555534" }
10
{"#"}
{"#####","#####","#####","#####","####."}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
Returns: {"2222233333", "2222233333", "2222233333", "2222233333", "2222133333", "4444455555", "4444455555", "4444455555", "4444455555", "4444455555" }
10
{"#"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","####."}
Returns: {"2222233333", "2222233333", "2222233333", "2222233333", "2222233333", "4444455555", "4444455555", "4444455555", "4444455555", "4444455551" }
10
{".####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
Returns: {"2222231111", "2222211111", "2222211111", "2222211111", "2222211111", "4444455555", "4444455555", "4444455555", "4444455555", "4444455555" }
10
{".####","#####","#####","#####","#####"}
{"#"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
Returns: {"2111133333", "1111133333", "1111133333", "1111133333", "1111133333", "4444455555", "4444455555", "4444455555", "4444455555", "4444455555" }
10
{"###","###","###","###","###"}
{"###","###","###","###","###"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"####","####","####","####","####"}
Returns: {"1112225555", "1112225555", "1112225555", "1112225555", "1112225555", "3333344444", "3333344444", "3333344444", "3333344444", "3333344444" }
10
{"#####","#####","#####","#####","#####"}
{"###","###","###","###","###"}
{"###","###","###","###","###"}
{"#####","#####","#####","#####","#####"}
{"####","####","####","####","####"}
Returns: {"1111144444", "1111144444", "1111144444", "1111144444", "1111144444", "2223335555", "2223335555", "2223335555", "2223335555", "2223335555" }
10
{"##","##","##","##","##","##","##","##","##","##"}
{"##","##","##","##","##","##","##","##","##","##"}
{"##","##","##","##","##","##","##","##","##","##"}
{"##","##","##","##","##","##","##","##","##","##"}
{"###","###","###","###","###","###","###","###","###","###"}
Returns: {"CHEAT" }
10
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#####","#####","#####","#####","#####"}
{"#"}
Returns: {"CHEAT" }
8
{"##.....", ".#####.", "....###" }
{"#....", "####.", "####.", "####.", "#####", "..###", "..###" }
{".###", "..##", "...#", "####", "####", ".###", ".###", ".###" }
{"##", "##" }
{"###" }
Returns: {"11555333", "21111133", "22221113", "22223333", "22223333", "22222333", "44222333", "44222333" }
10
{"##" }
{"##" }
{"###" }
{"###" }
{"#########", "#########", "#########", "#########", "#########", "#########", "#########", "#########", "#########", "#########" }
Returns: {"CHEAT" }
10
{"#" }
{"#" }
{"#" }
{"#" }
{"#" }
Returns: {"CHEAT" }