Ayudante de Ken-Ken

Ken-Ken es un juego de rompecabezas similar al Sudoku. Consiste en un tablero lleno de dígitos del 1 al 9, sin dos dígitos idénticos en la misma fila o columna. Luego, el tablero se divide en formas parecidas a piezas de rompecabezas (jaulas), cada una con un número objetivo y un operador matemático, que deben coincidir con los dígitos que la llenan (el orden no importa).

  • Para la suma +, los dígitos deben sumar target.
  • Para la multiplicación *, los dígitos deben multiplicarse para obtener target.
  • Para la resta -, los dígitos deben tener una diferencia de target. Solo se permiten jaulas de tamaño 2 para la resta.
  • Para la división /, los dígitos deben tener un cociente de target. Solo se permiten jaulas de tamaño 2 para la división.
  • Para ningún operador " ", los dígitos pueden llenarla con cualquiera de los operadores. Si una jaula tiene más de 2 celdas, solo puede tener operadores + o *.

Por ejemplo, con un operator de / y un target de 4, con una 2x1 cage, los dígitos posibles para llenarla son 2 y 8.

La forma de la cage se indica mediante 1's. Dados una cage, un target y un operator, tu objetivo es devolver un arreglo con todas las combinaciones posibles de dígitos (como una cadena JSON).

Ejemplo

cage = [
  [0, 1],
  [1, 1]
]

Con target = 24 y operator = "*", el resultado debería ser:

"{{1,3,8},{1,4,6},{2,2,6},{2,3,4}}"

Entradas

  • cage ([][]integer)

La forma de la jaula, indicada mediante 1's y 0's. 1 indica una celda de la jaula.

Restricciones garantizadas:

  • 1 ≤ cage.length ≤ 3
  • 1 ≤ cage[i].length ≤ 6
  • 2 ≤ cage size (# of 1's) ≤ 8

  • target (integer)

  • operator (string)

El operador será +, -, *, / o " ".

Para que coincida con la salida esperada de las pruebas, ordena tanto los arreglos internos como los externos y luego devuélvelos como una cadena JSON.