Este desafio é inspirado por este aplicativo . Os casos de teste são emprestados desse aplicativo.
Esse é um desafio de código mais rápido , em que o objetivo é resolver os maiores casos de teste no menor espaço de tempo. Existem alguns casos de teste menores, para que as pessoas possam testar seus algoritmos mais rapidamente.
Você receberá uma grade de entrada quadrada, de dimensões n por n, em que 9 <= n <= 12 . Essa grade será dividida em n áreas, onde as células de cada área têm identificadores exclusivos (usarei letras minúsculas de al no texto aqui, mas você pode escolher o que quiser, por exemplo, números inteiros 1 a 12 ) .
A entrada pode ser assim (formato de entrada opcional):
aabbbbbcc
adddbbbcc
adeeecccc
adddefgcc
hhhdifggg
hdddifffg
hhhiifffg
hihiifffg
iiiiiiggg
Ou, mais fácil de visualizar:
Desafio:
Você deve colocar 2 * n árvores neste parque, de acordo com as seguintes regras:
- Deve haver exatamente 2 árvores por coluna e 2 árvores por linha
- Todas as áreas devem ter exatamente 2 árvores.
- Nenhuma árvore pode ser adjacente a outra árvore, vertical, horizontal ou diagonal
A solução para o layout acima é:
Nota: Existe apenas uma solução para cada quebra-cabeça
Regras adicionais:
- Os formatos de entrada e saída são opcionais
- A saída pode, por exemplo, ser uma lista de índices, uma grade com 1/0 indicando se há uma árvore nessa posição ou uma versão modificada da entrada em que as árvores são indicadas
- O tempo de execução deve ser determinístico
- O programa deve terminar dentro de 1 minuto no computador de @ isaacg
- Especificações: 4 CPUs, CPU i5-4300U a 1,9 GHz, 7,5G de RAM.
- Caso seu programa não consiga resolver os dois maiores casos de teste em um minuto cada, o tempo para o segundo maior ( n = 11 ) será sua pontuação. Você perderá com uma solução que resolve o maior caso.
Casos de teste:
Eu posso editar esta lista se os envios parecerem personalizados para se ajustarem a esses casos de teste.
12 por 12 :
--- Input ---
aaaaabccccdd
aaaaabccccdd
aaaaabbbbddd
eeeafffgbghh
eeaafffgbghh
eefffffggghh
eeefijffghhh
iieiijjjjkhh
iiiiijjjjkhk
lljjjjjjjkkk
llllllkkkkkk
llllllkkkkkk
--- Solution ---
aaaaabcccCdD
aaaaaBcCccdd
aAaaabbbbdDd
eeeaffFgBghh
eeAaFffgbghh
eefffffGgGhh
EeefijffghhH
iiEiIjjjjkhh
IiiiijjjjkHk
lljJjJjjjkkk
lLllllkkKkkk
lllLllKkkkkk
11 por 11 :
--- Input ---
aaaaaaabbcc
adddabbbbcc
edddbbbbbbc
eddddbbbbbb
effffggghhh
effffgghhii
eefffjjhhii
eeeejjjhhii
eeejjjjkiii
jjjjjjkkiii
jjjjjkkkiii
--- Solution ---
aaAaaaabbCc
adddAbBbbcc
eDddbbbbbbC
eddDdBbbbbb
effffggGhHh
eFfffGghhii
eefFfjjhHii
EeeejjjhhiI
eeEjjjjKiii
JjjjJjkkiii
jjjjjkKkIii
10 por 10
--- Input ---
aaaaabccdd
aeaabbbccd
aeaabfbgcd
eeeaafggcd
eeeaafghcd
eeeiifghcd
ieiiigghcd
iiijighhcd
jjjjighhcd
jjjggghhdd
--- Solution ---
aaAaabccdD
aeaaBbBccd
aEaabfbgcD
eeeaaFgGcd
eEeAafghcd
eeeiiFghCd
IeiIigghcd
iiijigHhCd
JjJjighhcd
jjjgGghHdd
9 por 9
--- Input ---
aabbbbbcc
adddbbbcc
adeeecccc
adddefgcc
hhhdifggg
hdddifffg
hhhiifffg
hihiifffg
iiiiiiggg
--- Solution ---
aAbBbbbcc
adddbbBcC
adEeEcccc
AdddefgCc
hhhDiFggg
hDddifffG
hhhiIfFfg
HiHiifffg
iiiiiIgGg
--- Input ---
aaabbbccc
aaaabbccc
aaaddbcce
ffddddcce
ffffddeee
fgffdheee
fggfhhhee
iggggheee
iiigggggg
--- Solution ---
aaAbBbccc
AaaabbcCc
aaaDdBcce
fFddddcCe
fffFdDeee
fGffdheeE
fggfHhHee
IggggheeE
iiIgggGgg
There shall be exactly 2 trees per column, and 2 trees per row
portanto, uma força bruta é provavelmente impossível.