Un acertijo bien conocido implica contar cuántos cuadrados se pueden hacer usando los puntos en una cuadrícula de 3x3:
. . .
. . .
. . .
La respuesta es 6: cuatro cuadrados pequeños, un cuadrado grande y un cuadrado formado por las clavijas superior, izquierda, inferior y derecha, con bordes a lo largo de las diagonales de los cuadrados.
Su tarea es construir un programa que cuente el número total de cuadrados que se pueden formar a partir de un conjunto de puntos.
Su programa tomará información en uno de dos formatos (de su elección):
Un
M
porN
cuadrícula que consiste en.
o.
.
representa un punto en la cuadrícula del que un cuadrado puede ser una esquina, y todos los espacios en la cuadrícula están exactamente separados por una unidad horizontal o verticalmente.Una lista de pares de coordenadas que representan puntos en los que puede estar un cuadrado.
y devuelve el número de cuadrados distintos que se pueden formar usando los puntos provistos. Su programa debe devolver una solución correcta para cada entrada posible.
Por ejemplo, tome la entrada anterior pero donde falta el cuadrado central:
...
. .
...
Aquí solo hay dos cuadrados posibles (el grande y el diagonal), por lo que el programa debería volver 2
.
El código más corto para hacer esto en cualquier idioma gana.
Respuestas:
Python, 95
Toma una lista de coordenadas de stdin.
Explicación:
fuente