Entrada:
Uma NxM
grade ou sequência de várias linhas (ou outro formato de entrada razoável), contendo apenas ASCII (intervalo unicode [32,126]
) imprimível .
Resultado:
A quantidade de polígonos fechados do mesmo caractere que pode ser encontrado, com duas regras especiais:
- Os espaços são curingas e podem ser usados (várias vezes) para qualquer caractere
o
,O
, E0
são contadas como próprios polígonos fechados
Regras do desafio:
- (Anti-) Conexões diagonais entre os mesmos caracteres (ou espaços) estão incluídas para formar polígonos fechados.
- Você não pode passar por cima de outros caracteres (exceto os espaços curinga). (Ou seja, no primeiro caso de teste / exemplo abaixo, você não pode formar dois triângulos com os
A
, passando por cima dox
.) Portanto, todos os caracteres usados para um polígono fechado devem ser conectados (horizontal, vertical e / ou (anti-) diagonalmente ) - Polígonos são, pelo menos, três caracteres (excluindo os caracteres individuais
o
,O
,0
). - Linhas de caracteres adjacentes não são polígonos fechados.
- Os mesmos caracteres não podem ser usados para vários polígonos, excluindo espaços curinga.
- Espaços curinga não pode ser contado como
o
,O
ou0
. - Apenas três ou mais espaços não podem formar um polígono fechado. Sempre deve ter pelo menos um caractere não-espaço (e não
o
/O
/0
). - A entrada pode estar em qualquer formato razoável. Pode ser uma matriz de caracteres, uma linha delimitadora de nova linha, uma matriz de cadeias, uma matriz de caracteres com largura de número inteiro adicionada, etc.
- As entradas sempre serão um retângulo N por M (ou quadrado), portanto, nenhuma forma estranha de entrada
- Como os mesmos caracteres não podem ser usados mais de uma vez e queremos ter o maior número de polígonos fechados, o uso de vários caracteres para formar dois (ou mais) polígonos fechados em vez de um polígono maior é obviamente o objetivo pretendido na contagem (que também é por que polígonos fechados formados por
o
,O
ou0
nunca serão contados, pois já são polígonos fechados individualmente). - Letras maiúsculas e minúsculas são obviamente contadas como caracteres individuais.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- Além disso, é altamente recomendável adicionar uma explicação para sua resposta.
Exemplos / casos de teste:
Entrada:
AAAw
AxA4
'AoQ
Saída:, 2
porque esses polígonos podem ser formados:
Entrada:
1822uaslkoo
12*2sl ljoo
a* 0a91)j$*
()*#J9dddj*
*Q#ID dJj!"
*UJD SO&*93
Saída:, 12
porque esses polígonos podem ser formados:
Observe que:
- O amarelo abaixo não é um polígono, porque os o
já são contados como polígonos separados
- Os roxos e marrons não estão fechados
- Os vermelhos, cinza, verde e azul claro usam um ou mais caracteres de espaço que já foram usados para outros polígonos fechados
Entrada (dimensões são 2x4
):
3 3
2
Saída:, 3
porque esses polígonos podem ser formados:
Entrada:
AAAA
AAAA
AAxA
Saída:, 3
porque esses polígonos podem ser formados:
É claro que outros polígonos são possíveis aqui, mas não mais que 3. Aqui outro exemplo válido com 3
polígonos:
Entrada:
0QoO
Saída:, 3
porque esses polígonos podem ser formados:
Entrada:
W w
Ww
Saída:, 3
porque esses polígonos podem ser formados:
Observe que o espaço da camada superior é usado para todos os três polígonos. Aqui estão os três polígonos destacados individualmente:
Entrada:
W W
WW
Saída:, 3
porque os mesmos três polígonos que no teste anterior podem ser formados. Então não, não é 2
com esses dois polígonos:
Entrada:
abcdQefg
hQiQjQQk
QlQmnopQ
QqrstQQu
QvQQQwxy
QQz0QQQQ
+1
isso, mas eu realmente não vejo o que especial invólucro oso
s,O
S &0
s aumenta o desafio.o
,O
,0
sendo círculos como polígonos individuais, mas em uma solução que não acrescenta muito, exceto que oo
,O
,0
deve ser evitado quando formando polígonos maiores, e adicionando uma contagem para eles. Tarde demais para mudar isso agora, no entanto.Respostas:
Python 2 , 714
737821bytesExperimente online!
Para cada letra
A
(excetoo
,O
e0
), o código cria um gráfico representando a adjacência das diferentes ocorrências de letraA
e espaço na matriz inicial especificada. Em seguida, calcula o conjunto de ciclos semi-separados que cobrem o gráfico ao maximizar o número de ciclos (a separação é baseada apenas na letraA
, o mesmo espaço pode ser usado por vários ciclos).O código passa em todos os testes.
Entrada: a lista de linhas da matriz.
fonte