Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Haskell] Obtener elementos repetidos
Autor Mensaje
ericlifs Sin conexión
Campeon del cubo Rubik
Sin estado :(
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 103
Agradecimientos dados: 10
Agradecimientos: 55 en 17 posts
Registro en: Jul 2012
Mensaje: #1
[Haskell] Obtener elementos repetidos Ejercicios Paradigmas de Programación
Como les va? Estaba tratando de hacer un parcial de la pagina de pdp y me trabé en una parte. Dice:

Obtener los elementos repetidos de una lista
>repetidos [1,2,3,1,2,44]
[1,2]

Yo llegue a hacer:
repetidos lista = [elemento | elemento <-lista, length (filter (elemento==) lista) > 1]

El tema es que me muestra dos veces el elemento 1 y dos veces el elemento 2 (no se como hacer que si ya encontro a ese elemento no lo vuelva a comparar)

Gracias, Eric!
09-05-2013 15:13
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rm1216 Sin conexión
Campeon del cubo Rubik
ljhglhgñlkj
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 123
Agradecimientos dados: 79
Agradecimientos: 10 en 7 posts
Registro en: Dec 2011
Mensaje: #2
RE: [Haskell] Obtener elementos repetidos
A mí me quedó así!

sinRepetidos listaNum | listaNum == [] = []
| any (== head listaNum) (tail listaNum) = sinRepetidos (tail listaNum)
| otherwise = (take 1 listaNum) ++ sinRepetidos (tail listaNum)
09-05-2013 15:38
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] rm1216 recibio 1 Gracias por este post
marcodicro (21-05-2015)
ericlifs Sin conexión
Campeon del cubo Rubik
Sin estado :(
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 103
Agradecimientos dados: 10
Agradecimientos: 55 en 17 posts
Registro en: Jul 2012
Mensaje: #3
RE: [Haskell] Obtener elementos repetidos
y como haces para obtener solo los que estaban repetidos?

Eric!
09-05-2013 15:56
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rm1216 Sin conexión
Campeon del cubo Rubik
ljhglhgñlkj
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 123
Agradecimientos dados: 79
Agradecimientos: 10 en 7 posts
Registro en: Dec 2011
Mensaje: #4
RE: [Haskell] Obtener elementos repetidos
Aaaaaah, pensé que era el mismo ejercicio, perdón jajaja.

repetidos listaNum | listaNum == [] = []
| any (== head listaNum) (tail listaNum) = (take 1 listaNum) ++ repetidos (tail listaNum)
| otherwise = repetidos (tail listaNum)

No me fijé si compila. El tema es que me parece que si el número se repite más de una vez, te lo devuelve repetido. Si querés que no te pase eso, por ahí convendría hacer esto:

Repetidos listaNum | listaNum == [] = []
| any (== head listaNum) (tail listaNum) = (take 1 listaNum) ++ repetidos (filter (==(take 1 listaNum)) listaNum)

Lo que hice fue en la segunda guarda fue sacar todos los que se repetían en la lista. Decime si no se entiende mi solución jaja también la estoy cursando así que soy medio desastre todavía
09-05-2013 16:16
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
reLlene Sin conexión
Profesor del Modulo A
...
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 307
Agradecimientos dados: 371
Agradecimientos: 63 en 35 posts
Registro en: Aug 2012
Mensaje: #5
RE: [Haskell] Obtener elementos repetidos
Si te sirve de algo, mi resolucion!!! =)

sinrep [x]=[]
sinrep (x:xs) | x elem xs = sinrep (xs)
| otherwise x:sinrep (xs)

repetidos [x] = []
repetidos (x:xs) | not ( elem) x xs = repetidos xs
| otherwise x: repetidos xs
(Este mensaje fue modificado por última vez en: 09-05-2013 17:51 por reLlene.)
09-05-2013 17:47
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
ericlifs Sin conexión
Campeon del cubo Rubik
Sin estado :(
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 103
Agradecimientos dados: 10
Agradecimientos: 55 en 17 posts
Registro en: Jul 2012
Mensaje: #6
RE: [Haskell] Obtener elementos repetidos
sigue pasando lo mismo:

>repetidos [1,2,2,3,1,1,4]
[1,2,1]

Eric!
09-05-2013 18:00
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rm1216 Sin conexión
Campeon del cubo Rubik
ljhglhgñlkj
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 123
Agradecimientos dados: 79
Agradecimientos: 10 en 7 posts
Registro en: Dec 2011
Mensaje: #7
RE: [Haskell] Obtener elementos repetidos
Este salió =)

repetidos listaNum | listaNum == [] = []
| any (== head listaNum) (tail listaNum) = (take 1 listaNum) ++ repetidos (filter (/=(head listaNum)) listaNum)
| otherwise = repetidos (tail listaNum)
09-05-2013 18:12
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ichiluk Sin conexión
Campeon del cubo Rubik
Metametaprogramando.
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 134
Agradecimientos dados: 5
Agradecimientos: 21 en 18 posts
Registro en: Apr 2008
Mensaje: #8
RE: [Haskell] Obtener elementos repetidos
A mi se me ocurrió llamar a otra función con una lista que sabe los elementos repetidos:


repetidosDe lista = repetidosDe' [] lista

repetidosDe' accum [] = accum
repetidosDe' accum (x:xs)
| elem x xs && not (elem x accum) = repetidosDe' (x:accum) xs
| otherwise = repetidosDe' accum xs


10-05-2013 15:41
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
cplhenderson Sin conexión
Militante
OMG Todo menos Fiorante T__T
***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 73
Agradecimientos dados: 13
Agradecimientos: 12 en 12 posts
Registro en: May 2011
Mensaje: #9
RE: [Haskell] Obtener elementos repetidos
esta seria la solución para filtrar los elementos repetidos de una lista, lo que hace es ir recorriendo la lista y se fija si la cabeza(x) de la lista vuelve a aparecer en la cola(xs) de la lista si es asi aplica la funcion "repetidos" sobre la cola(xs) y sino no elimina la cabeza(x) y continua aplicando repetidos a la cola(xs), todo hasta que se llega al último elemento de la lista que se supone que no va a estar repetido.

repetidos [x] = [x]
repetidos (x:xs) | elem x xs = repetidos xs
| otherwise = x: repetidos xs
13-05-2014 00:41
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)