Problem Statement
You are to populate a 5x5 square with each of the numbers between 1 and 25, inclusive. The numbers in each row must be in increasing order from left to right. Some of the cells are already filled in, but no more than one number per row. You must fill in the remaining cells.
You will be given a
Definition
- Class:
- NewMagicSquare
- Method:
- completeTheSquare
- Parameters:
- String[]
- Returns:
- String[]
- Method signature:
- String[] completeTheSquare(String[] square)
- (be sure your method is public)
Constraints
- square will contain exactly 5 elements.
- Each element of square will contain exactly 14 characters.
- Each element of square will be a space-separated list of cells.
- Each cell will be either a number written with two digits or two '?' characters.
- Each element of square will contain at most one filled cell.
- All numbers in square will be between 1 and 25, inclusive.
- All numbers in square will be distinct.
Examples
{"?? ?? ?? ?? ??", "?? ?? ?? ?? ??", "?? ?? ?? ?? ??", "?? ?? ?? ?? ??", "?? ?? ?? ?? ??"}
Returns: {"01 02 03 04 05", "06 07 08 09 10", "11 12 13 14 15", "16 17 18 19 20", "21 22 23 24 25" }
You are not limited by prefilled cells. The answer is the lexicographically smallest square.
{"?? ?? 20 ?? ??", "?? ?? ?? ?? ??", "?? ?? ?? 05 ??", "?? ?? ?? ?? ??", "?? ?? ?? ?? ??"}
Returns: {"01 06 20 21 22", "07 08 09 10 11", "02 03 04 05 12", "13 14 15 16 17", "18 19 23 24 25" }
{"?? ?? ?? ?? ??", "?? ?? ?? ?? 24", "?? ?? ?? ?? ??", "?? ?? ?? ?? ??", "21 ?? ?? ?? ??"}
Returns: { }
You should place four numbers greater than 21 into the 5th row. There are four such numbers - 22, 23, 24 and 25, but 24 is already used in the second row.
{"?? ?? 15 ?? ??", "02 ?? ?? ?? ??", "?? ?? ?? 07 ??", "?? ?? 16 ?? ??", "?? ?? ?? ?? 21"}
Returns: {"01 03 15 17 18", "02 08 09 10 22", "04 05 06 07 23", "11 12 16 24 25", "13 14 19 20 21" }
{"?? ?? ?? ?? ??","?? ?? ?? ?? 12","?? ?? ?? 22 ??","?? ?? 21 ?? ??","?? ?? ?? ?? ??"}
Returns: {"01 02 03 04 05", "06 07 08 09 12", "10 11 13 22 23", "14 15 21 24 25", "16 17 18 19 20" }
{"?? ?? ?? 04 ??","?? ?? ?? ?? ??","?? ?? ?? ?? ??","?? ?? 23 ?? ??","?? ?? ?? ?? 09"}
Returns: {"01 02 03 04 10", "11 12 13 14 15", "16 17 18 19 20", "21 22 23 24 25", "05 06 07 08 09" }
{"?? ?? 03 ?? ??","?? ?? ?? ?? ??","?? ?? ?? ?? ??","?? ?? ?? 07 ??","?? ?? ?? ?? 21"}
Returns: {"01 02 03 08 09", "10 11 12 13 14", "15 16 22 23 24", "04 05 06 07 25", "17 18 19 20 21" }
{"?? ?? ?? 06 ??","?? ?? 18 ?? ??","?? ?? ?? ?? ??","?? ?? 03 ?? ??","?? ?? ?? ?? ??"}
Returns: { }
{"?? ?? ?? ?? 11","?? ?? ?? ?? ??","?? ?? ?? 24 ??","?? ?? ?? ?? ??","?? 21 ?? ?? ??"}
Returns: { }
{"?? ?? 01 ?? ??","?? ?? 09 ?? ??","11 ?? ?? ?? ??","?? ?? ?? ?? ??","?? ?? ?? 15 ??"}
Returns: { }
{"?? ?? ?? ?? ??","?? ?? 21 ?? ??","?? ?? ?? 23 ??","?? ?? ?? 25 ??","?? 10 ?? ?? ??"}
Returns: { }
{"13 ?? ?? ?? ??","?? 25 ?? ?? ??","?? ?? ?? ?? ??","?? 07 ?? ?? ??","?? 12 ?? ?? ??"}
Returns: { }
{"?? ?? ?? ?? ??","?? ?? ?? ?? ??","?? 19 ?? ?? ??","?? ?? ?? 11 ??","?? ?? ?? ?? ??"}
Returns: {"01 02 03 04 05", "06 07 12 13 14", "15 19 20 21 22", "08 09 10 11 16", "17 18 23 24 25" }
{"?? 15 ?? ?? ??","?? ?? ?? ?? ??","?? ?? 01 ?? ??","?? ?? ?? 08 ??","?? ?? ?? ?? ??"}
Returns: { }
{"?? ?? 19 ?? ??","?? ?? 16 ?? ??","?? ?? ?? 05 ??","?? ?? ?? ?? ??","?? ?? 01 ?? ??"}
Returns: { }
{"?? ?? ?? 13 ??","?? 23 ?? ?? ??","25 ?? ?? ?? ??","?? ?? ?? ?? ??","?? 17 ?? ?? ??"}
Returns: { }
{"?? ?? ?? ?? 12","?? ?? ?? ?? ??","?? ?? ?? 08 ??","07 ?? ?? ?? ??","?? ?? ?? ?? ??"}
Returns: {"01 02 03 09 12", "10 11 13 14 15", "04 05 06 08 16", "07 17 18 19 20", "21 22 23 24 25" }
{"?? ?? ?? ?? ??","?? ?? ?? ?? 02","?? ?? ?? ?? ??","?? ?? ?? ?? ??","?? ?? ?? ?? ??"}
Returns: { }
{"?? ?? ?? ?? ??","?? ?? ?? 06 ??","?? 13 ?? ?? ??","?? ?? ?? ?? ??","23 ?? ?? ?? ??"}
Returns: { }
{"?? ?? ?? ?? ??","?? ?? ?? ?? 11","?? ?? ?? 21 ??","?? ?? ?? ?? 08","?? ?? ?? 19 ??"}
Returns: {"01 12 13 22 23", "02 03 09 10 11", "14 15 20 21 24", "04 05 06 07 08", "16 17 18 19 25" }
{"25 ?? ?? ?? ??","?? ?? ?? 01 ??","?? ?? 14 ?? ??","?? 22 ?? ?? ??","?? ?? ?? ?? 15"}
Returns: { }
{"?? ?? 05 ?? ??","?? ?? ?? 16 ??","?? ?? ?? 22 ??","?? ?? ?? ?? ??","?? ?? ?? 02 ??"}
Returns: { }
{"?? ?? ?? ?? ??","?? ?? ?? ?? 04","?? ?? ?? 16 ??","?? ?? 06 ?? ??","?? ?? ?? ?? 25"}
Returns: { }
{"?? ?? ?? ?? ??","?? ?? ?? ?? ??","?? 21 ?? ?? ??","?? ?? ?? 02 ??","?? ?? 20 ?? ??"}
Returns: { }
{"?? ?? ?? ?? 10","?? ?? ?? ?? 09","?? ?? ?? ?? ??","?? ?? ?? ?? ??","?? ?? ?? ?? ??"}
Returns: {"01 02 03 04 10", "05 06 07 08 09", "11 12 13 14 15", "16 17 18 19 20", "21 22 23 24 25" }
{"?? ?? ?? ?? ??","?? ?? 09 ?? ??","?? ?? ?? ?? ??","?? ?? 25 ?? ??","?? ?? ?? ?? ??"}
Returns: { }
{"05 ?? ?? ?? ??","?? ?? ?? ?? ??","?? ?? ?? ?? ??","?? 22 ?? ?? ??","?? ?? ?? 02 ??"}
Returns: { }
{"?? ?? 25 ?? ??","?? ?? ?? ?? 07","08 ?? ?? ?? ??","?? ?? ?? ?? ??","?? ?? ?? 14 ??"}
Returns: { }
{"?? ?? ?? ?? ??","?? ?? ?? ?? 22","?? ?? ?? ?? ??","?? 23 ?? ?? ??","?? ?? ?? ?? ??"}
Returns: { }
{"?? ?? ?? ?? ??","?? ?? ?? 13 ??","?? ?? ?? 04 ??","?? ?? ?? ?? 19","?? ?? ?? 06 ??"}
Returns: { }
{"?? ?? ?? 03 ??","?? ?? ?? ?? ??","?? ?? 09 ?? ??","?? 16 ?? ?? ??","?? ?? ?? ?? ??"}
Returns: { }
{"?? ?? ?? ?? 07","21 ?? ?? ?? ??","23 ?? ?? ?? ??","?? ?? ?? ?? ??","15 ?? ?? ?? ??"}
Returns: { }
{"25 ?? ?? ?? ??","?? 07 ?? ?? ??","?? ?? 21 ?? ??","?? ?? ?? 10 ??","18 ?? ?? ?? ??"}
Returns: { }
{"13 ?? ?? ?? ??","?? ?? ?? 08 ??","?? ?? ?? ?? ??","?? ?? ?? 15 ??","?? ?? ?? ?? 24"}
Returns: {"13 14 16 17 18", "01 02 03 08 09", "04 05 06 07 19", "10 11 12 15 25", "20 21 22 23 24" }
{"?? ?? ?? 13 ??","?? ?? ?? ?? 03","?? ?? ?? 18 ??","?? ?? ?? ?? ??","?? ?? ?? ?? ??"}
Returns: { }
{"12 ?? ?? ?? ??","?? ?? ?? ?? 09","13 ?? ?? ?? ??","?? 02 ?? ?? ??","?? 21 ?? ?? ??"}
Returns: {"12 14 15 16 17", "03 04 05 06 09", "13 18 19 20 22", "01 02 07 08 10", "11 21 23 24 25" }
{"?? ?? ?? ?? 08","?? ?? ?? 11 ??","?? ?? ?? ?? ??","?? ?? ?? ?? ??","?? ?? ?? 17 ??"}
Returns: {"01 02 03 04 08", "05 06 07 11 12", "09 10 13 18 19", "20 21 22 23 24", "14 15 16 17 25" }
{"?? ?? ?? ?? ??","?? ?? 17 ?? ??","09 ?? ?? ?? ??","?? ?? ?? ?? 11","?? ?? ?? ?? ??"}
Returns: {"01 02 03 04 05", "12 13 17 18 19", "09 14 15 16 20", "06 07 08 10 11", "21 22 23 24 25" }
{"?? ?? ?? ?? ??","10 ?? ?? ?? ??","?? ?? ?? ?? ??","?? ?? ?? ?? ??","?? 13 ?? ?? ??"}
Returns: {"01 02 03 04 05", "10 11 12 14 15", "06 07 08 16 17", "18 19 20 21 22", "09 13 23 24 25" }
{"?? ?? ?? 02 ??","?? ?? 01 ?? ??","?? ?? 22 ?? ??","?? ?? ?? ?? ??","?? ?? 09 ?? ??"}
Returns: { }
{"?? 19 ?? ?? ??","?? ?? ?? ?? ??","?? ?? ?? ?? 15","?? ?? ?? ?? 14","?? ?? ?? ?? ??"}
Returns: {"01 19 20 21 22", "02 03 04 05 16", "06 07 08 09 15", "10 11 12 13 14", "17 18 23 24 25" }
{"?? ?? ?? 20 ??","?? ?? ?? ?? ??","?? 02 ?? ?? ??","?? ?? ?? ?? 21","?? ?? ?? ?? 14"}
Returns: {"03 04 05 20 22", "06 07 08 09 15", "01 02 23 24 25", "16 17 18 19 21", "10 11 12 13 14" }
{"?? 14 ?? ?? ??","?? ?? ?? ?? ??","?? ?? 03 ?? ??","?? ?? ?? 20 ??","?? ?? ?? ?? ??"}
Returns: {"04 14 15 16 17", "05 06 07 08 09", "01 02 03 10 11", "12 13 18 20 21", "19 22 23 24 25" }
{"?? ?? 20 ?? ??","?? ?? ?? ?? ??","?? ?? ?? ?? 11","24 ?? ?? ?? ??","?? ?? ?? ?? 13"}
Returns: { }
{"?? ?? ?? ?? 25", "?? ?? ?? ?? 20", "?? ?? ?? ?? 15", "?? ?? ?? ?? 10", "?? ?? ?? ?? 05"}
Returns: {"21 22 23 24 25", "16 17 18 19 20", "11 12 13 14 15", "06 07 08 09 10", "01 02 03 04 05" }
{"21 ?? ?? ?? ??", "16 ?? ?? ?? ??", "11 ?? ?? ?? ??", "06 ?? ?? ?? ??", "01 ?? ?? ?? ??"}
Returns: {"21 22 23 24 25", "16 17 18 19 20", "11 12 13 14 15", "06 07 08 09 10", "01 02 03 04 05" }
{"?? ?? 23 ?? ??", "?? ?? 18 ?? ??", "?? ?? 13 ?? ??", "?? ?? 08 ?? ??", "?? ?? 03 ?? ??"}
Returns: {"04 05 23 24 25", "09 10 18 19 20", "11 12 13 14 15", "06 07 08 16 17", "01 02 03 21 22" }
{"?? ?? 20 ?? ??", "?? ?? ?? ?? ??", "?? ?? ?? 05 ??", "?? ?? ?? ?? ??", "?? ?? ?? ?? ??" }
Returns: {"01 06 20 21 22", "07 08 09 10 11", "02 03 04 05 12", "13 14 15 16 17", "18 19 23 24 25" }
{"?? ?? 15 ?? ??", "02 ?? ?? ?? ??", "?? ?? ?? 07 ??", "?? ?? 16 ?? ??", "?? ?? ?? ?? 21" }
Returns: {"01 03 15 17 18", "02 08 09 10 22", "04 05 06 07 23", "11 12 16 24 25", "13 14 19 20 21" }
{"?? ?? ?? 24 ??", "?? ?? ?? 22 ??", "?? ?? ?? 19 ??", "?? ?? ?? 10 ??", "?? ?? ?? ?? 05" }
Returns: {"06 11 12 24 25", "13 14 15 22 23", "16 17 18 19 20", "07 08 09 10 21", "01 02 03 04 05" }
{"?? ?? ?? ?? ??", "?? ?? ?? ?? 20", "?? ?? ?? ?? 15", "?? ?? ?? ?? 10", "?? ?? ?? ?? 05" }
Returns: {"21 22 23 24 25", "16 17 18 19 20", "11 12 13 14 15", "06 07 08 09 10", "01 02 03 04 05" }
{"?? ?? ?? ?? 25", "?? ?? ?? ?? 20", "?? ?? ?? ?? 15", "?? ?? ?? ?? 10", "?? ?? ?? ?? 05" }
Returns: {"21 22 23 24 25", "16 17 18 19 20", "11 12 13 14 15", "06 07 08 09 10", "01 02 03 04 05" }
{"?? ?? 15 ?? ??", "02 ?? ?? ?? ??", "?? ?? ?? 07 ??", "?? ?? 19 ?? ??", "?? ?? ?? ?? 21" }
Returns: {"01 03 15 16 17", "02 08 09 10 22", "04 05 06 07 23", "11 12 19 24 25", "13 14 18 20 21" }
{"?? ?? ?? ?? ??", "?? ?? ?? ?? ??", "?? ?? ?? ?? ??", "?? ?? ?? ?? ??", "?? ?? ?? ?? 05" }
Returns: {"06 07 08 09 10", "11 12 13 14 15", "16 17 18 19 20", "21 22 23 24 25", "01 02 03 04 05" }
{"?? ?? ?? ?? ??", "?? ?? ?? ?? ??", "?? ?? ?? ?? ??", "?? ?? 10 ?? ??", "?? ?? ?? 04 ??" }
Returns: {"05 06 07 11 12", "13 14 15 16 17", "18 19 20 21 22", "08 09 10 23 24", "01 02 03 04 25" }