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.