Prolog - Dividir una lista en pares e impares y luego unirla

 
Vista:

Dividir una lista en pares e impares y luego unirla

Publicado por k1m (1 intervención) el 19/01/2013 01:19:08
Hola amigos, talvez sea facil pero no se como hacerlo, acudo a los expertos en prolog porque necesito de urgencia en prolog un programa que me permita ingresar una lista de números y que lo separe en 2 listas una de pares y otra de impares y luego las una en una sola lista.

por ejemplo con este codigo:

dividir([ ],[ ],[ ]).
dividir([L|R],[L|P],I):-E is L mod 2,E=0,dividir(R,P,I),!.
dividir([L|R],P,[L|I]):-C is L mod 2,C>0,dividir(R,P,I),!.

he conseguido esto:

?- dividir([2,3,4,5,6,7,8,9],Pares,Impares).
Pares = [2, 4, 6, 8],
Impares = [3, 5, 7, 9].

hasta alli e llegado, pero me falta al final unir las 2 listas pares e impares generar otra lista como esta

Unidos = [2, 4, 6, 8, 3, 5, 7, 9].

Finalmente deveria ser algo como esto:

?- dividir([2,3,4,5,6,7,8,9],Pares,Impares,Unidos).
Pares = [2, 4, 6, 8],
Impares = [3, 5, 7, 9].
Unidos = [2, 4, 6, 8, 3, 5, 7, 9].

Espero su ayuda y/o sugerencias.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Dividir una lista en pares e impares y luego unirla

Publicado por luis (1 intervención) el 12/10/2013 03:35:55
Oye podrias hacer el favor de explicar bien tu codigo es que estoy empezando y no se muy bien que fue lo que hiciste. porfa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Dividir una lista en pares e impares y luego unirla

Publicado por CkriZz666 (1 intervención) el 27/05/2016 12:52:34
lo que deberias de hacer es concatenar dichas listas que ya tienes con la funcion concatena que es igual a esta:

concatena([],H2,H2).
concatena([H1|T1],L2,[H1|T2]) :- concatena(T1,L2,T2).

el cual con ese predicado se pueden unir dos listas y en tu caso eso fue lo que se formo lo unico que tendrias que hacer es mandarla a llamar para que asi se unan dichas listas de pares e impares creo yo no se si este en lo correcto saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Dividir una lista en pares e impares y luego unirla

Publicado por jhon (1 intervención) el 11/07/2018 20:28:03
dividir([ ],[ ],[ ]).
dividir([L|R],[L|P],I):-E is L mod 2,E=0,dividir(R,P,I),!.
dividir([L|R],P,[L|I]):-C is L mod 2,C>0,dividir(R,P,I),!.
conc([],L,L).
conc([X|L1],L2,[X|L3]):-conc(L1,L2,L3).
nuevafuncion(L1,L2):- dividir(L1, PR,PI),conc(PR,PI,L2).

Aquí lo tienen ya lo uní en una sola lista la clave es crear una nueva función. :(Y)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar