Ajudante de Ken-Ken

Ken-Ken é um jogo de quebra-cabeça semelhante ao Sudoku. Ele consiste em um tabuleiro preenchido com dígitos de 1 a 9, sem dois dígitos idênticos na mesma linha ou coluna. Depois, o tabuleiro é dividido em formas semelhantes a peças de quebra-cabeça (jaulas), cada uma com um número-alvo e um operador matemático, que devem corresponder aos dígitos que a preenchem (a ordem não importa).

  • Para a adição +, os dígitos devem somar target.
  • Para a multiplicação *, os dígitos devem ser multiplicados para obter target.
  • Para a subtração -, os dígitos devem ter uma diferença de target. Apenas jaulas de tamanho 2 são permitidas para a subtração.
  • Para a divisão /, os dígitos devem ter um quociente de target. Apenas jaulas de tamanho 2 são permitidas para a divisão.
  • Para nenhum operador " ", os dígitos podem preenchê-la usando qualquer um dos operadores. Se uma jaula tiver mais de 2 células, ela só poderá ter operadores + ou *.

Por exemplo, com um operator de / e um target de 4, em uma 2x1 cage, os dígitos possíveis para preenchê-la são 2 e 8.

O formato da cage é indicado por 1's. Dada uma cage, um target e um operator, seu objetivo é retornar um array com todas as combinações possíveis de dígitos (como uma string JSON).

Exemplo

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

Com target = 24 e operator = "*", a saída deveria ser:

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

Entradas

  • cage ([][]integer)

O formato da jaula, indicado por 1's e 0's. 1 indica uma célula da jaula.

Restrições garantidas:

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

  • target (integer)

  • operator (string)

O operador será +, -, *, / ou " ".

Para corresponder à saída esperada dos testes, ordene tanto os arrays internos quanto os externos e depois retorne o resultado como uma string JSON.