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 Nunidades 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..