Write a program to solve a 4x4 Sudoku puzzle. The input board is a 4x4 grid of integers, where 0 represents an empty cell. Your goal is to fill the empty cells such that the following rules are satisfied:
The program should modify the input board in-place and return the solved board. You can assume that the given input board will have a unique solution.
[ [0, 2, 3, 0], [3, 0, 0, 2], [2, 0, 0, 3], [0, 3, 2, 0] ]
[ [1, 2, 3, 4], [3, 4, 1, 2], [2, 1, 4, 3], [4, 3, 2, 1] ]
The empty cells are filled to satisfy all Sudoku rules for 4x4. For example, board[0][0] must be 1 to satisfy row, column, and 2x2 box rules.
[ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ]
[ [1, 2, 3, 4], [3, 4, 1, 2], [2, 1, 4, 3], [4, 3, 2, 1] ]
A completely empty board is solved to one possible valid 4x4 Sudoku solution.
[ [0, 2, 3, 0], [3, 0, 0, 2], [2, 0, 0, 3], [0, 3, 2, 0] ]
[ [1, 2, 3, 4], [3, 4, 1, 2], [2, 1, 4, 3], [4, 3, 2, 1] ]