O jogo de tabuleiro
No jogo de tabuleiro " Carcassonne ", os jogadores colocam peças combinando suas bordas e obtêm as pontuações mais altas criando grandes áreas contíguas do terreno. A seguir, são (aproximadamente) os tipos e quantidades de peças incluídas no jogo:
#01
x4
#02
x5
#03
x8
#04
x2
#05
x9
#06
x4
#07
x1
#08
x3
#09
x3
#10
x3
#11
x4
#12
x5
#13
x3
#14
x3
#15
x2
#16
x5
#17
x5
#18
x2
#19
x3
#20
x1
#21
x5
#22
x2
#23
x1
#24
x1
#25
x1
A tarefa
Você deve colocar um ladrilho combinando com as arestas, enquanto tenta manter as maiores áreas contíguas possíveis do terreno.
Canal
- As peças podem ser colocadas apenas em um dos (até 4) espaços em branco adjacentes a qualquer peça (ou peça) existente na área de recreação.
- Os ladrilhos podem ser girados 90, 180 ou 270 graus.
Correspondência de arestas
- As arestas de um ladrilho colocado devem corresponder às arestas tocantes dos (até 4) ladrilhos vizinhos, ou seja, os pixels tocantes são da mesma cor.
Terreno contíguo
- "Fechar uma área do terreno" refere-se à colocação de um ladrilho de forma que qualquer área contígua de cor não possa ser continuada com mais posicionamentos de ladrilho.
- Se um posicionamento alternativo for possível, ele deverá ser escolhido sobre qualquer posicionamento de ladrilho que feche uma área do terreno.
- Se você precisar escolher entre vários canais de fechamento, escolha um. Se você precisar escolher entre vários canais sem fechamento, escolha qualquer.
- Desconsidere # ff00ff (os pixels de canto) ao calcular áreas contíguas. Também desconsidere edifícios, ou seja, áreas de cores já totalmente fechadas dentro de um ladrilho.
Entrada
A entrada possui duas imagens:
A área de recreação.
- A área de reprodução inicial consiste em bloco
#11
(um bloco único). - A área de reprodução aumentada criada como saída também deve ser suportada como entrada.
- A área de reprodução inicial consiste em bloco
O ladrilho a ser colocado.
- Todos os blocos de exemplo devem ser suportados como entrada.
Determine arestas correspondentes / terreno contíguo usando apenas esses dados de imagem. Sem codificação.
Saída
- Saída é uma imagem que mostra a área de reprodução resultante após a colocação do ladrilho.
- A imagem deve ser compatível com o seu próprio programa, ou seja, pode ser usada como entrada na área de reprodução.
- Se for impossível colocar um bloco, retorne um erro.
Você pode assumir que
- As peças são sempre 55 px por 55 px
- Os ladrilhos apenas apresentam as cores usadas atualmente nos ladrilhos de exemplo.
Notas
- Sua resposta deve apresentar exemplo de saída após pelo menos 2 passagens (mais é incentivado).
- Esta é uma renderização parcial e imprecisa do jogo de tabuleiro original. Você não precisa aplicar nenhuma das regras ou táticas não mencionadas aqui.
Ponto
- Sua pontuação é a contagem de bytes do seu envio.
- Os dados da imagem não estão incluídos na sua pontuação.
- Menor pontuação ganha.
Jogando um jogo completo
Você pode escrever um script que use sua submissão para jogar um jogo completo, que pode consistir em:
- Colocando um bloco escolhido pseudo-aleatoriamente do conjunto completo de 85.
- Retornando o bloco ao conjunto, se não puder ser colocado.
- Repetindo até que cada peça tenha sido colocada - ou até que duas peças seguidas não possam ser colocadas.
Ele não será incluído na sua contagem de bytes ou melhorará sua pontuação, mas provavelmente vou oferecer uma recompensa para esse tipo de resposta.