Cuadrado en el plano cartesiano

Defina la función cuadrado-en-el-plano-cartesiano tal que dado el baricentro de un cuadrado y la mitad de uno de sus lados se obtengan los 4 puntos cartesianos necesarios para formar un cuadrado.

  • Notas:

    • El baricentro se representa por el mapa {:x x :y y} donde x e y son números enteros positivos y/o negativos, incluyendo el 0.
    • La mitad de uno de los lados del cuadrado es un número entero positivo mayor o igual a 1.
    • Los 4 puntos cartesianos como resultado serán obtenidos en un conjunto: #{{:x x :y y} {:x x :y y} ...}

Ejemplos:

Ejemplo 01

  • Baricentro: (3, 3)
  • Mitad del lado: 5
  • Longitud del lado: 10

images/01.png


Ejemplo 02

  • Baricentro: (-5, -3)
  • Mitad del lado: 8
  • Longitud del lado: 16

images/02.png


Pruebas

;; Para el Ejemplo 01
=> (cuadrado-en-el-plano-cartesiano {:x 3 :y 3} 5)
#{{:x -2 :y 8} {:x 8 :y 8} {:x 8 :y -2} {:x -2 :y -2}}

;; Para el Ejemplo 02
=> (cuadrado-en-el-plano-cartesiano {:x -5 :y -3} 8)
#{{:x -13 :y 5} {:x 3 :y 5} {:x 3 :y -11} {:x -13 :y -11}}

;; Cuando no sea posible obtener un cuadrado se regresa el punto (0,0)
=> (cuadrado-en-el-plano-cartesiano {:x 2 :y -9} 0)
=> (cuadrado-en-el-plano-cartesiano {:x 6.3 :y 4.2} 5.1)
=> (cuadrado-en-el-plano-cartesiano {:x -5 :y -3} -8)
=> (cuadrado-en-el-plano-cartesiano {:x true :y "Hola mundo!"} [1 2 3])
=> (cuadrado-en-el-plano-cartesiano {:x [6 7] :y #{}} \@)
#{{:x 0 :y 0}}

Notas

  • No puede hacerse uso de ifs.