Dadas duas formas contíguas da mesma área, determine a maneira ideal de dividir a primeira forma em um número mínimo de segmentos contíguos, de forma que eles possam ser reorganizados para formar a segunda forma. Em outras palavras, encontre o número mínimo de segmentos necessários que podem formar as duas formas.
"Contíguo" significa que todos os quadrados da forma podem ser alcançados a partir de qualquer outro quadrado andando pelas bordas. Formas e segmentos podem ter furos.
"Reorganizar" significa que você move os segmentos; você pode traduzir, girar e refleti-los.
As formas estão contidas em uma grade; em outras palavras, cada forma consiste em uma coleção de quadrados de unidades unidos por seus cantos / arestas.
Especificações de entrada
A entrada será fornecida em algum formato razoável - lista de pontos, matriz de cadeias representando cada grade, etc. Você também pode obter os tamanhos da grade, se solicitado. As grades terão as mesmas dimensões e as duas formas terão a mesma área e a área será positiva.
Especificações de saída
A saída deve ser apenas um número inteiro positivo único. Observe que sempre haverá uma resposta positiva porque, na pior das hipóteses, você apenas divide as formas em N
unidades de quadrados.
Exemplos
Os exemplos são apresentados como uma grade .
representando um espaço em branco e #
representando parte da forma.
Caso 1
Entrada
.....
.###.
.#.#.
.###.
.....
###..
..#..
..#..
..###
.....
Resultado
2
Explicação
Você pode dividi-lo em dois blocos em forma de L de 4:
#
###
Caso 2
Entrada
#...
##..
.#..
.##.
.##.
####
....
....
Resultado
2
Explicação
Você pode dividir as formas da seguinte maneira:
A...
AA..
.A.
.BB.
.AA.
BBAA
....
....
Você também pode fazer:
A...
AA..
.B..
.BB.
.AB.
AABB
....
....
Caso 3
Entrada
#....#
######
.####.
.####.
Resultado
2
Explicação
A....B
AAABBB
.ABBB.
.AAAB.
(Este caso de teste demonstra a necessidade de girar / refletir formas para obter uma saída ideal)
Caso 4
Entrada
.###.
..#..
.##..
.##..
Resultado
2
Explicação
Não importa como você seleciona blocos, selecionar um 2x1 da primeira forma necessariamente impede que os outros dois sejam agrupados; assim, você pode usar um 2x1 e dois 1x1s. No entanto, (obrigado @Jonah), você pode dividi-lo em uma forma de L de 3 blocos e um único quadrado da seguinte forma:
.AAB.
..A..
.AA..
.BA..