Centro de gravedad

Defina la función centro-de-gravedad tal que dada una lista o un vector de números enteros regresa una secuencia que indique la presencia de un centro de gravedad.

Una lista o un vector de números enteros cuentan con un centro de gravedad si existe alguna posición para la cual la suma de los números antes a esta es igual a la suma posterior a ella.

Ejemplos

Ejemplo 01

La lista '(1 2 3 8 3 2 1) cuenta con un centro de gravedad en la posición del número 8 ya que la suma de la lista '(1 2 3) es igual a la suma de la lista '(3 2 1).

Ejemplo 02

El vector [10 20 30 40 -7 50 50] cuenta con un centro de gravedad en la posición del número -7 ya que la suma del vector [10 20 30 40] es igual a la suma del vector [50 50].

Pruebas

;; Para el Ejemplo 01
;; Ante una lista regresa una secuecia
=> (centro-de-gravedad '(1 2 3 8 3 2 1))
((1 2 3) (8) (3 2 1))

;; Para el Ejemplo 02
;; Ante un vector regresa una secuencia
=> (centro-de-gravedad [10 20 30 40 -7 50 50])
((10 20 30 40) (-7) (50 50))

=> (centro-de-gravedad '(1 3 9 5 -2 1))
((1 3) (9) (5 -2 1))

=> (centro-de-gravedad [3 3 3 3 3 3 3])
((3 3 3) (3) (3 3 3))

=> (centro-de-gravedad '(1 100 50 -51 1 1))
((1) (100) (50 -51 1 1))

=> (centro-de-gravedad [1 100 50 -51 1 1])
((1) (100) (50 -51 1 1))

=> (centro-de-gravedad '(6))
(() (6) ())

=> (centro-de-gravedad [6])
(() (6) ())

;; No cuentan con un centro de gravedad
=> (centro-de-gravedad '(1 6 4 5 -2 1))
=> (centro-de-gravedad [9 3])
()

;; Ante una lista o un vector vacío regresa una secuencia vacía
=> (centro-de-gravedad '())
()
=> (centro de-gravedad [])
()

;; Ante aquello que no sea una lista o un vector regresa una secuencia vacía
=> (centro-de-gravedad #{1 2 3 9 6})
()
=> (centro-de-gravedad "1238321")
()
=> (centro-de-gravedad 4438)
()

Notas

  • Revisa la documentación sobre sequence.
  • No puede hacerse uso de recursividad de cola.