Uno de mis pasatiempos matemáticos favoritos es dibujar una cuadrícula rectangular y luego encontrar todos los rectángulos visibles en esa cuadrícula. ¡Toma esta pregunta y aventúrate por ti mismo!
¿Puedes contar la cantidad de rectángulos?
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
El número total de rectángulos para este tablero de 4 x 4 minichess es exactamente
100
¿Estabas en lo correcto?
Matemáticas relacionadas: ¿Cuántos rectángulos hay en un tablero de ajedrez de 8 × 8?
El reto
Escriba la función / programa más corto que cuente el número total de rectángulos visibles en una cuadrícula / imagen no toroidal .
Desafíos relacionados: ¡ Cuenta los rectángulos únicos! , Encuentra el número de rectángulos en una matriz de bytes 2D .
Formato de entrada
Su función o programa puede elegir trabajar con entrada basada en texto o entrada gráfica.
Entrada basada en texto
La cuadrícula será una cuadrícula ASCII m -by- n ( m filas, n columnas) que consta de los siguientes caracteres:
- espacios,
-
para partes de un segmento de línea horizontal,|
para partes de un segmento de línea vertical, y+
para esquinas
Puede introducir esta cuadrícula ASCII como la entrada / argumento de su programa / función en forma de
- una sola cadena delimitada por saltos de línea,
- una cadena sin líneas nuevas pero con uno o dos enteros que codifican las dimensiones de la cuadrícula, o
- Un conjunto de cuerdas.
Nota: La entrada basada en texto contiene al menos 1 fila y al menos 1 columna.
Entrada gráfica
Alternativamente, las cuadrículas se codifican como imágenes PNG en blanco y negro de 5 * n píxeles de ancho y 5 * m píxeles de alto. Cada imagen consta de bloques de 5 px * 5 px que corresponden a la entrada ASCII por:
- Los espacios se convierten en bloques blancos. Estos bloques se denominan bloques de espacios en blanco .
- Los segmentos de línea y las esquinas se convierten en bloques que no son espacios en blanco. El píxel central de tales bloques es negro.
- Editar: si dos esquinas (en la entrada ASCII) están conectadas por un segmento de línea, los centros de bloque correspondientes (en la entrada gráfica) también deberían estar conectados por una línea negra.
Esto significa que cada bloque solo se puede elegir (haga clic aquí para ampliar la imagen) .
Nota: Los límites azules son solo para fines ilustrativos. La entrada gráfica tiene al menos 5 px de ancho y 5 px de alto. Puede convertir la entrada gráfica a cualquier imagen monocroma, potencialmente a otros formatos de archivo de imagen). Si elige convertir, especifique en la respuesta. No hay penalidad para la conversión.
Formato de salida
Si está escribiendo un programa, debe mostrar un número no negativo que indique el número total de rectángulos en la entrada.
Si está escribiendo una función, también debería devolver un número no negativo que indica el número total de rectángulos en la entrada.
Casos de ejemplo
Caso 1, Gráfico: ( 30 px * 30 px), ASCII: ( 6 filas, 6 cols)
+--+
| |
| ++-+
+-++ |
| |
+--+
Rendimiento esperado: 3
Caso 2, Gráfico: ( 20 px * 20 px), ASCII: ( 4 filas, 4 cols)
++-+
|+++
+++|
+-++
Rendimiento esperado: 6
Caso 3, Gráfico: ( 55 px * 40 px), ASCII: ( 8 filas, 11 cols)
+++--+
+-+++ |
| | ++--+
+--+--++ ++
| ||
| ||
++ +--++
++
Rendimiento esperado: 9
Caso 4, Gráfico: ( 120 px * 65 px), ASCII: ( 13 filas, 24 cols)
+--+--+ +--+ +--+ +--+
| | | | | | | | |
+--+--+ | | | | | |
| | | +--+--+--+--+--+
+--+--+ | | | |
| | | | ++
+-+-+-+-+ +--+ +--+ ++
| | | | |
+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+
Rendimiento esperado: 243
Caso 5, Gráfico: ( 5 px * 5 px. ¡Sí, está ahí!), ASCII: Solo un espacio.
Rendimiento esperado: 0
Caso 6, Gráfico: ( 35 px * 20 px), ASCII: ( 4 filas, 7 cols)
+--+--+
|++|++|
|++|++|
+--+--+
Rendimiento esperado: 5
Supuestos
Para facilitarle la vida, tiene la garantía de que:
- Al ser no toroidal , la cuadrícula no se ajusta horizontal ni verticalmente.
- No hay cabos sueltos, por ejemplo,
+---
o+- -+
. Todos los segmentos de línea tienen dos extremos. - Dos líneas que se encuentran en
+
deben cruzarse en ese punto. - No tiene que preocuparse por entradas no válidas.
Se aplican las reglas contra las lagunas estándar. Por favor trate los cuadrados como rectángulos. Opcionalmente, puede eliminar los espacios finales en cada fila de la cuadrícula.
Este es el código de golf , así que haga su entrada lo más corta posible. Las soluciones gráficas y basadas en texto competirán juntas.