Problem Statement
Little Johnny has just learned about Sudoku, but finds these puzzles annoyingly hard, so he plays a much simpler version. He plays on a 4x4 table where each cell is either empty or contains a single number between 1 and 4, inclusive. The purpose of the game is to fill the entire table with numbers so that each row, each column, and each 2x2 square (labeled A, B, C, and D in the picture below) contains each of the numbers 1, 2, 3, and 4 exactly once.
You are given a
Definition
- Class:
- SillySudoku
- Method:
- countWays
- Parameters:
- String[]
- Returns:
- int
- Method signature:
- int countWays(String[] board)
- (be sure your method is public)
Constraints
- table will contain exactly 4 elements.
- Each element will have exactly four characters.
- Each character will be '-', '1', '2', '3' or '4'.
Examples
{"--21", "--34", "2143", "3412"}
Returns: 1
This puzzle has only one solution: 4321 1234 2143 3412 Each row contains 1, 2, 3, and 4: 4321 1234 2143 3412 Each column contains 1, 2, 3, and 4: 4 3 2 1 1 2 3 4 2 1 4 3 3 4 1 2 And each of the four 2x2 squares contains 1, 2, 3, and 4: 43 21 12 34 21 43 34 12
{"--1-", "--1-", "----", "----"}
Returns: 0
This is a clearly invalid puzzle since it contains two 1s in the upper right 2x2 square.
{"1---", "-42-", "-3--", "----"}
Returns: 3
{"1---", "--1-", "-1--", "---1"}
Returns: 18
{"1---", "----", "----", "----"}
Returns: 72
{"----", "----", "----", "----"}
Returns: 288
{"----", "----", "3---", "---3"}
Returns: 36
{"---1", "1---", "-1--", "--1-"}
Returns: 18
{"---1", "1---", "----", "2-1-"}
Returns: 6
{"1234", "----", "----", "----"}
Returns: 12
{"4321", "1234", "2143", "3412"}
Returns: 1
{"4321", "1-3-", "3---", "21-4"}
Returns: 0
{"13-4","-4-3","4-3-","31-2"}
Returns: 1
{"----","-234","4312","--43"}
Returns: 1
{"-4-1","1-42","-214","4-23"}
Returns: 1
{"--13","3124","1-4-","4--1"}
Returns: 1
{"-24-","43-2","-431","3-2-"}
Returns: 1
{"3124","----","423-","13-2"}
Returns: 1
{"-13-","3421","4-1-","134-"}
Returns: 1
{"2143","341-","-3--","1-34"}
Returns: 1
{"3--2","2--3","--21","1234"}
Returns: 2
{"-1-3","341-","-231","1-24"}
Returns: 1
{"2431","--4-","31--","4-13"}
Returns: 1
{"243-","-324","---3","3142"}
Returns: 1
{"14--","---4","41-3","2341"}
Returns: 1
{"-31-","1234","-4--","214-"}
Returns: 1
{"2143","432-","12-4","3---"}
Returns: 1
{"3241","143-","4123","-314"}
Returns: 1
{"4-23","32-4","2431","1342"}
Returns: 1
{"4312","-243","34-1","2134"}
Returns: 1
{"4213","13-2","2134","3-21"}
Returns: 1
{"3241","1432","2314","--23"}
Returns: 1
{"3214","4132","142-","234-"}
Returns: 1
{"4321","2143","34-2","12-4"}
Returns: 1
{"1243","4312","31-4","243-"}
Returns: 1
{"143-","2341","3214","412-"}
Returns: 1
{"3421","2143","4-12","-234"}
Returns: 1
{"243-","1-42","3214","4123"}
Returns: 1
{"1423","23-4","3241","41-2"}
Returns: 1
{"42-3","31-2","2431","1324"}
Returns: 1
{"1-32","2341","4123","32-4"}
Returns: 1
{"34-1","1243","2134","43-2"}
Returns: 1
{"24--","-3--","-2--","----"}
Returns: 6
{"----","31-2","13--","----"}
Returns: 4
{"--1-","-2--","3---","24--"}
Returns: 1
{"-23-","---2","----","-32-"}
Returns: 2
{"-12-","----","--1-","-342"}
Returns: 2
{"---4","-4-1","4---","3---"}
Returns: 1
{"312-","----","---3","--42"}
Returns: 2
{"--2-","---4","-43-","-3--"}
Returns: 2
{"2-4-","-4--","--1-","--23"}
Returns: 1
{"---1","2--4","--4-","-2-3"}
Returns: 1
{"--14","--2-","2---","----"}
Returns: 3
{"41-3","----","1--4","-4--"}
Returns: 1
{"-3-4","--32","--21","---3"}
Returns: 1
{"--4-","---3","----","--3-"}
Returns: 12
{"----","----","3--4","-42-"}
Returns: 2
{"----","---3","--3-","----"}
Returns: 36
{"--2-","----","-4--","----"}
Returns: 18
{"---1","----","----","4--3"}
Returns: 9
{"--4-","----","----","----"}
Returns: 72
{"--4-","-4--","4---","----"}
Returns: 18
{"----","-1-2","-4--","----"}
Returns: 9
{"----","----","3---","-4--"}
Returns: 24
{"---3","3-42","----","-4--"}
Returns: 1
{"----","----","---3","--2-"}
Returns: 24
{"----","----","--3-","2---"}
Returns: 12
{"----","--2-","----","----"}
Returns: 72
{"----","----","----","-2-4"}
Returns: 24
{"----","----","----","-4--"}
Returns: 72
{"--1-","----","----","2-4-"}
Returns: 9
{"---4","----","41-3","----"}
Returns: 3
{"---3","1-2-","----","-1-2"}
Returns: 3
{"----","----","-4-3","---2"}
Returns: 6
{"----","----","----","-1--"}
Returns: 72
{"-3--","-1--","----","--3-"}
Returns: 6
{"----","----","----","3--1"}
Returns: 24
{"1111", "2222", "3333", "4444" }
Returns: 0
{"----", "----", "----", "----" }
Returns: 288
{"4321", "1234", "2143", "3412" }
Returns: 1
{"1234", "4123", "3412", "2341" }
Returns: 0
{"1111", "1111", "1111", "1111" }
Returns: 0
{"1111", "2222", "3312", "123-" }
Returns: 0
{"1221", "2334", "2143", "3412" }
Returns: 0
{"4241", "1423", "322-", "1111" }
Returns: 0
{"1234", "3412", "2143", "4321" }
Returns: 1
{"1321", "1234", "2143", "3412" }
Returns: 0
{"--11", "--34", "2143", "3412" }
Returns: 0
{"4321", "1234", "2143", "3413" }
Returns: 0
{"1234", "4312", "3421", "1111" }
Returns: 0
{"1214", "3423", "----", "----" }
Returns: 0