Secuencia equilibrada
Decimos que una secuencia de elementos está equilibrada con respecto a una propiedad o predicado si el número de elementos de la secuencia que cumplen la propiedad es igual al número de elementos de la secuencia que no la cumplen.
Defina la función equilibrada?
tal que dada una función y una secuencia de elementos (lista, vector o conjunto) regresa
true
si la secuencia dada es equilibrada de acuerdo a la función dada.
Pruebas
;; 4 números regresan true y 4 números regresan false ante la función zero?
=> (equilibrada? zero? '(10 0 20 0 30 0 40 0))
true
;; 3 números regresan true y 3 números regresan false ante la función neg?
=> (equilibrada? neg? [10 20 30 -10 -20 -30])
true
;; 3 números regresan true y 3 números regresan false ante la función pos?
=> (equilibrada? pos? [10 -20 30 -10 20 -30])
true
;; Suponiendo que la función centena? ya está definida y regresa true
;; dado un número entero positivo o negativo en el rango de -999 a -100 o de 100 a 999, inclusive.
=> (equilibrada? centena? [-4 432 89 321 7798 692])
true
;; Suponiendo que la función vocal? ya está definida y regresa true
;; dado un carácter, acentudado o no (e, é y ë como ejemplos), que sea una letra vocal.
=> (equilibrada? vocal? #{\A \b \é \C \ï \d Ó \F})
true
;; Suponiendo que la función sumatoria-positiva? ya está definida y regresa true
;; dada una secuencia de números enteros cuya sumatoria sea mayor a 0.
=> (equilibrada? sumatoria-positiva? '([1 2 3] #{-4 -6 -7} [-3 -2 -1] #{9 4 1}))
true
Notas
- Observe que la función dada a
equilibrada?
puede ser cualquier otra función que sea un predicado (regresatrue
ofalse
). - La función
equilibrada?
es una función de orden superior.
Restricciones
- No es posible hacer uso de recursividad ni de las funciones
loop
(recur
),do
,filter
,map
,mapv
ypmap
de Clojure. - No es posible hacer uso de
if
s.