UTNianos

Versión completa: Ayuda con ej. de recursividad
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Es del parcial Ratones Paranoicos:
http://www.pdep.com.ar/ParcialFuncionalS...edirects=0

Mi problema esta en como hacer la funcion recursiva del punto 4, sería la tercer función que se llama contieneA
La hice de una forma no recursiva así:

contieneA pass palabra = palabra elem (tails pass)

Pero no me esta saliendo la forma recursiva... alguien me podria dar una mano?

Muchas Gracias
lo que podes hacer para hacerlo recursivo es no usar elem
comprobas con la cabeza de tails pass y si no volves a llamar a contieneA con la cola de tails pass

algo asi

contieneA pass palabra | (head.tails) pass = palabra
| contieneA (tail.tails) pass palabra
contieneA [] _ = false
La resolucion con recursividad yo la haria asi:


contieneA string1 [] = False
contieneA string1 string2
| length string1 > length string2 = False
| take (length string1) string2 == string1 = True
| otherwise = contieneA string1 (drop (length string1) string2)



Ahora que me fijo, está mal, ponele que yo tengo el string "baTuVieja" y el string "TuVieja", si yo le paso esos strings la funcion me va a devolver falso, que pajaaaaa
Creo que funcionaria comparar elemento por elemento hasta el final de la lista, igual te lo dejo a vos, me fui a seguir preparando el final de algoritmos jaja


edit: ahora que miro de nuevo, estan usando tails, no tail, que salame, yo nunca use funciones que sean de un modulo distinto del prelude, no sabia que se podia jajajaj
edit2: re que estaba en el enunciado :facepalm:
Es sencillo si usás las funciones que definiste antes:


contieneA _ [] = True
contieneA [] _ = False
contieneA palabra contenida = empiezaCon palabra contenida || contieneA palabra (tail contenida)



Tratá de hacer vos la funciòn empiezaCon.
Por si no la sacás está acá:
Spoiler: Mostrar

empiezaCon _ [] = True
empiezaCon [] _ = False
empiezaCon (x:xs) (c:cs)
| x == c = empiezaCon xs cs
| otherwise = False


Saludos!
URLs de referencia