Entrada:
Una NxM
cuadrícula o cadena de varias líneas (u otro formato de entrada razonable), que contiene solo ASCII imprimible (rango unicode [32,126]
).
Salida:
La cantidad de polígonos cerrados del mismo carácter que se pueden encontrar, con dos reglas especiales:
- Los espacios son comodines y se pueden usar (varias veces) para cualquier personaje
o
,O
y0
se cuentan como polígonos cerrados
Reglas de desafío:
- (Anti-) Las conexiones diagonales entre los mismos caracteres (o espacios) se incluyen para formar polígonos cerrados.
- No puede repasar otros personajes (excepto los espacios comodín). (Es decir, en el primer caso de prueba / ejemplo a continuación, no se pueden formar dos triángulos con la
A
's' sobre elx
.) Por lo tanto, todos los caracteres utilizados para un polígono cerrado deben estar conectados (horizontalmente, verticalmente y / o (anti)) diagonalmente ) - Los polígonos son al menos tres caracteres (sin incluir los caracteres individuales
o
,O
,0
). - Las líneas de caracteres adyacentes no son polígonos cerrados.
- No se pueden usar los mismos caracteres para múltiples polígonos, excluyendo espacios comodín.
- Espacios comodín no pueden ser contados como
o
,O
o0
. - Tres o más espacios por sí solos no pueden formar un polígono cerrado. Siempre debe tener al menos un carácter no espacial (y no
o
/O
/0
). - La entrada puede estar en cualquier formato razonable. Puede ser una matriz de caracteres, una cadena de delimitador de nueva línea, una matriz de cadenas, una matriz de caracteres con ancho entero agregado, etc.
- Las entradas siempre serán un rectángulo N o M (o un cuadrado), por lo que no hay formas de entrada extrañas
- Dado que los mismos caracteres no se pueden usar más de una vez y queremos tener tantos polígonos cerrados, usar múltiples caracteres para formar dos (o más) polígonos cerrados en lugar de un polígono más grande es, por supuesto, el objetivo previsto en el conteo (que también es por qué los polígonos cerrados formados por
o
,O
o0
nunca serán contados, ya que ya son polígonos cerrados individualmente). - Las letras mayúsculas y minúsculas, por supuesto, se cuentan como caracteres individuales.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Ejemplos / Casos de prueba:
Entrada:
AAAw
AxA4
'AoQ
Salida: 2
porque estos polígonos se pueden formar:
Entrada:
1822uaslkoo
12*2sl ljoo
a* 0a91)j$*
()*#J9dddj*
*Q#ID dJj!"
*UJD SO&*93
Salida: 12
porque estos polígonos se pueden formar:
Tenga en cuenta que:
- El amarillo de abajo no es un polígono, porque los o
's ya se cuentan como polígonos separados
- Los morados y marrones no están cerrados
- Los rojos, grises, verdes y azules claros usan uno o más -caracteres de espacio que ya se usaron para otros polígonos cerrados
Entrada (las dimensiones son 2x4
):
3 3
2
Salida: 3
porque estos polígonos se pueden formar:
Entrada:
AAAA
AAAA
AAxA
Salida: 3
porque estos polígonos se pueden formar:
Por supuesto, otros polígonos son posibles aquí, pero no más de 3. Aquí otro ejemplo válido con 3
polígonos:
Entrada:
0QoO
Salida: 3
porque estos polígonos se pueden formar:
Entrada:
W w
Ww
Salida: 3
porque estos polígonos se pueden formar:
Tenga en cuenta que el espacio de la capa superior se usa para los tres polígonos. Aquí están los tres polígonos resaltados individualmente:
Entrada:
W W
WW
Salida: 3
porque se pueden formar los mismos tres polígonos que en la prueba anterior. Entonces no, no es 2
con estos dos polígonos:
Entrada:
abcdQefg
hQiQjQQk
QlQmnopQ
QqrstQQu
QvQQQwxy
QQz0QQQQ
+1
esto, pero yo realmente no veo lo especial de la carcasa de loso
s,O
S &0
s se suma al reto.o
,O
,0
siendo círculos como polígonos individuales, sino en una solución que no aporta mucho, excepto que elo
,O
,0
se debe evitar cuando se forman los polígonos más grandes, y la adición de un recuento para ellos. Sin embargo, es demasiado tarde para cambiarlo ahora.Respuestas:
Python 2 , 714
737821bytesPruébalo en línea!
Para cada letra
A
(exceptoo
,O
y0
) el código construye un gráfico que representa la adyacencia de las diferentes ocurrencias de letraA
y espacio en la matriz inicial dada. Luego, calcula el conjunto de ciclos semiseparados que cubren el gráfico al maximizar el número de ciclos (la separación se basa solo en la letraA
, el mismo espacio se puede usar durante varios ciclos).El código pasa todas las pruebas.
Entrada: la lista de líneas de la matriz.
fuente