Viernes 04 de mayo de 2007 a las 14:05
hola estoy empezando a estudiar prolog y tengo que resolver unos ejercicios porfavor me podrian ayudar a resolverlos para ver si estoy en lo correcto porque tengo un poco de dificultad GRACIAS.. (**) Verifique si una palabra es palíndromo. ?- palindromo([a,b,a]). yes (**) Transforme los elementos que puedan hallarse en sub-listas en una lista de un solo nivel. ?- mi_flatten([a, [b, [c, d], e]], X). X = [a, b, c, d, e] Consejo: Puede utilizar los predicados predefinidos is_list/1 y append/3 (**) Elimine elementos duplicados consecutivos. ?- comprime([a,a,a,b,b,c,d,d,d,e], X). X = [a, b, c, d, e] (**) Empaque elementos duplicados consecutivos en sub-listas. ?- empaque([a,a,a,b,b,c,d,d,d,e], X). X = [[a,a,a],[b,b],[c],[d,d,d],[e]] (**) Liste cuantas veces se encuentra un elemento duplicado consecutivo. ?- repetido([a,a,a,b,b,c,d,d,d,e], X). X = [3,2,1,3,1] (**) Liste cuantas veces se encuentra un elemento duplicado consecutivo dentro de una sublista que contenga el número y el elemento. ?- comprime2([a,a,a,b,b,c,d,d,d,e], X). X = [[3,a],[2,b],[1,c],[3,d],[1,e]] (**) Construya el predicado descomprimir que tome como entrada la salida de la lista anterior. ?- descomprime([[3,a],[2,b],[1,c],[3,d],[1,e]], X). X = [a,a,a,b,b,c,d,d,d,e] (*) Repita n veces los elementos de una lista. ?- repite([a,b,c],3, X). X = [a,a,a,b,b,b,c,c,c] (**) Repita [n,m,…] veces los elementos de una lista. ?- repite_lista([a,b,c],[3,4,2], X). X = [a,a,a,b,b,b,b,c,c] (**) Implementar la función substr tal que dada una lista X, se corten los elementos desde N en numero de M. ?- fsubstr([h,o,l,a,m,u,n,d,o],5,4, X). X = [m,u,n,d] (**) Implementar la función replace. ?- fsubstr([h,o,l,a,m,u,n,d,o,h,o,l,a],[h,o,l,a,],[t,u], X). X = [t,u,m,u,n,d,o,t,u] (*) Inserte un elemento en una posición. ?- insertar([a,b,d,e] ,c, 3,X). X = [a,b,c,d,e] (*) Genere elementos desde una rango de números. ?- gen_numeros(5,9,X). X = [5,6,7,8,9] (*) Elimine el elemento en la posición de una lista. ?- elimina_elemento([a,b,c,d,e],3,E,X). E=c X = [a,b,d,e] (**) Extraiga un número de elementos desde una posición randómica de una lista. ?- ran_elementos([a,b,c,d,e,f,g,h],3,X). X = [d,e,f] Consejo: Puede utilizar la función preconstruida random/1 y el resultado del problema anterior. (**) Construya la función lotto que obtenga un grupo de números randómicos dentro de un rango. ?- lotto (10,99,5,X). X = [45,12,66,33,89] Consejo: Puede utilizar la combinación de los problemas gen_numeros/3, ran_elementos/3. (*) Implemente la función substr/2 ?- fsubstr([h,o,l,a,m,u,n,d,o],[o,l,a],X). X = 2 (**) Implemente la función substr/3 con un parámetro de inicio de búsqueda ?- fsubstr([h,o,l,a,m,u,n,d,o,h,o,l,a],[o,l,a],3,X). X = 11 (**) Implemente la función substr/4 con un parámetro de inicio de búsqueda y otro de número de ocurrencia ?- fsubstr([h,o,l,a,m,u,n,d,o,h,o,l,a,h,o,l,a],[o,l,a],3,2,X). X = 15