Contar la frecuencia de cada elemento en una lista.
Intento escribir un programa que contará la frecuencia de cada elemento en una lista.
In: "aabbcabb"
Out: [("a",3),("b",4),("c",1)]
Puedes ver mi código en el siguiente enlace:http://codepad.org/nyIECIT2 En este código la salida de la función única sería así.
In: "aabbcabb"
Out: "abc"
Usando la salida de unique, contaremos la frecuencia de la lista de objetivos. Puedes ver el código aquí también:
frequencyOfElt xs=ans
where ans=countElt(unique xs) xs
unique []=[]
unique xs=(head xs):(unique (filter((/=)(head xs))xs))
countElt ref target=ans'
where ans'=zip ref lengths
lengths=map length $ zipWith($)(map[(=='a'),(==',b'),(==',c')](filter.(==))ref)(repeat target)
Error:Syntax error in input (unexpected symbol "unique")
Pero en ghci 6.13 se muestran también otros tipos de error.
Pocos me preguntaron cuál es el propósito de usar [(== 'a'), (== ', b'), (== ', c')]. Lo que espero: si ref = "abc" y target = "aabbaacc" entonces
zipWith($) (map filter ref)(repeat target)
mostrará ["aaaa", "bb", "cc"] luego puedo usar la longitud del mapa sobre esto para obtener la frecuencia Aquí para filtrar la lista de acuerdo con la referencia que uso [(== 'a'), (== ' , b '), (==', c ')]
Asumo que hay un error lógico en [(== 'a'), (== ', b'), (== ', c')] aquí ..