Este desafio é baseado no seguinte quebra-cabeça: Você é dado um n
por n
grade com n
células marcadas. Seu trabalho é dividir a grade em n
partes em que cada parte consiste exatamente em n
células, cada uma contendo exatamente uma célula marcada.
Exemplo
Aqui está um quebra-cabeça à esquerda e sua solução (única) à direita:
Desafio
Você receberá um conjunto de n
coordenadas com índice zero em qualquer formato razoável.
[(0,0), (0,3), (1,0), (1,1), (2,2)]
E seu trabalho é escrever um programa que retorne qualquer partição válida (novamente, em qualquer formato razoável).
[
[(0,0), (0,1), (0,2), (1,2), (1,3)],
[(0,3), (0,4), (1,4), (2,4), (3,4)],
[(1,0), (2,0), (3,0), (4,0), (4,1)],
[(1,1), (2,1), (3,1), (3,2), (4,2)],
[(2,2), (2,3), (3,3), (4,3), (4,4)]
]
Se o quebra-cabeça não tiver solução, o programa deve indicar isso lançando um erro ou retornando uma solução vazia.
Exemplos de entrada / saída
[(0,0)] => [[(0,0)]]
[(0,0), (1,1)] => [
[(0,0), (1,0)],
[(0,1), (1,1)]
]
[(0,0), (0,1), (1,0)] => [] (no solution)
[(0,0), (0,1), (0,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (1,1), (2,1)],
[(0,2), (1,2), (2,2)],
]
[(0,0), (0,2), (1,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (0,2), (1,1)],
[(1,2), (2,1), (2,2)],
]
Pontuação
Isso é código-golfe , então o código mais curto vence.
code-golf
combinatorics
grid
set-partitions
Peter Kagey
fonte
fonte
Respostas:
JavaScript (ES7), 166 bytes
Experimente online!
Quão?
++
fonte