Mayores y menores repeticiones
Dada una colección (lista, vectores y conjuntos) de colecciones (listas, vectores y conjuntos) se obtienen los elementos que cuenten con una mayor repetición así como los de menor repetición de manera absoluta: en la colección de colecciones.
Defina la función mayores-y-menores-repeticiones
tal que dada una colección de colecciones regresa un mapa
indicando los elementos con mayor y menor cantidad de repeticiones y su repeteción.
Ejemplos
Ejemplo 01
Dada la colección #{#{10 50 20 30} #{40 30 20 50 60} #{30 50 70} #{40 50} #{} #{30} #{50 30}}
- Los elementos con mayores repeticiones:
{30 5 50 5}
- Los elementos con menores repeticiones:
{20 2 40 2}
Ejemplo 02
Dada la colección [[\c \y \z] '(\y \g true \f \c) #{\y \z \@ \c} [10 \a 10 \b 10 \c] '(\c \a \s \a) #{\c \z}]
- Los elementos con mayores repeticiones:
{\c 6}
- Los elementos con menores repeticiones:
{\y 3 \z 3 10 \3}
Ejemplo 03
Dada la colección #{[1 10] [2 10] [3 10] [4 10] [5 10] [10 10 10]}
- Los elementos con mayores repeticiones:
{10 8}
- Los elementos con menores repeticiones:
{10 8}
Pruebas
;; Para el Ejemplo 01
=> (mayores-y-menores-repeticiones #{#{10 50 20 30} #{40 30 20 50 60} #{30 50 70} #{40 50} #{} #{30} #{50 30}})
{:mayores {30 5 50 5} :menores {20 2 40 2}
;; Para el Ejemplo 02
=> (mayores-y-menores-repeticiones [[\c \y \z] '(\y \g true \f \c) #{\y \z \@ \c} [10 \a 10 \b 10 \c] '(\c \a \s \a) #{\c \z}])
{:mayores {\c 6} :menores {\y 3 \z 3 10 \3}}
;; Para el Ejemplo 03
=> (mayores-y-menores-repeticiones #{#{[1 10] [2 10] [3 10] [4 10] [5 10] [10 10 10]}}}
{:mayores {10 8} :menores {10 8}}
Restricciones
- No es posible hacer uso de la función
frequencies
de Clojure.
Nota
Solo las colecciones secuenciales de colecciones (listas, vectores y conjuntos) están consideradas como argumentos válidos. Los mapas y las cadenas de caracteres no.