Prolog - convertir cadenas a listas

 
Vista:

convertir cadenas a listas

Publicado por Reynier Sayú Belón (2 intervenciones) el 12/05/2008 04:45:49
Hola, me hace falta convertir cadenas de caracteres al tipo de dato lista, o sea la cadena de caracteres puede tener palabras reservadas del prolog tales como sin, cos, tan, log, y otras mas que se refieran a funciones matematicas, esto incluye letras y numero y ^, es que estoy haceindo un programa para derivar diferentes funciones matematicas y me parece que esa es una vía, encontré la función name que te recoge una cadena de letras y te las convierte a una lista con los numeros ascii, pero no me sirve ya que me hace falta que también me coja las palabras reservadas del prolog, por eso me hace falta que me den respuesta a esto con la mayor rapidez posible y me digan si estoy erroneo, o si me pueden ayudar a encontrar alguna función, o libro que hable acerca del tema para poder orientarme.
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

RE:convertir cadenas a listas

Publicado por Frank (1 intervención) el 02/06/2008 23:36:39
si te responden dime,que me hace falta
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

RE:convertir cadenas a listas

Publicado por Reynier_Sayu_Belon (2 intervenciones) el 03/06/2008 17:48:09
a ver ya encontre lo que queria hacer definitivamente no pude convertir una cadena de caracteres que fueran simbolos, numeros y letras entradas por teclado a una lista, pero bueno en cuanto a expresiones matematicas entradas por consola si pude encontrara algo de eso. Resulta que las expresiones matematicas el prolog las entiende de otra manera que a lo mejor no estamos acostumbrados a verlas de ese punto. cuando tu le entras para ej: x+1, el lo traduce a +(x,1),-(x,1). *(x,1),/(x,1), y asi funcionan para todos estos operadores, de manera que para el predicado que pongas lo entienda, debe de ser de esta manera.
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

Si se puede amigo

Publicado por Luigi (1 intervención) el 02/02/2009 22:40:14
domains
lenteros = integer*
predicates
crea_lista(integer,lenteros)
principal
concatenar(lenteros,lenteros,lenteros)
clauses
principal:-write("Ingrese el # de elementos :"), readint(N),crea_lista(N,L),write(L).
crea_lista(0,[]):-!.

crea_lista(N,L):-N1=N-1,crea_lista(N1,L1),write("Ingrese dato :"),readint(X),concatenar(L1,[X],L).
concatenar([],L,L):-!.
concatenar([X|Xs],Ys,[X|Zs]):-concatenar(Xs,Ys,Zs).
goal
principal.
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

a ver si entendi...

Publicado por emiliano (1 intervención) el 24/02/2010 16:58:52
cadena3:-write('ingrese cadena'),nl,read(C),pasar(C,L),write(L).
pasar('',[]).
pasar(C,[H|T]):-sub_atom(C,0,1,A,H),sub_atom(C,1,A,_,S),pasar(S,T).
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

Ayuda.

Publicado por Franklin (1 intervención) el 26/11/2016 19:36:14
Hola emiliano, vi tu código e imprimo lo que contiene cada variable, mostrándome lo siguiente:

?cadena3.
ingrese cadena
|: 'Hol'.

A1=2 H=H A2=2 S=ol T=_G1439
A1=1 H=o A2=1 S=l T=_G1442
A1=0 H=l A2=0 S= T=_G1445
[H,o,l]
true .

Estoy muy interesado debido a que necesito ayuda en 2 cosas con un programa que realizo, Lo primero por ejemplo si yo ingreso:
'Hola como estas'... se genere la siguiente lista sin tomar en cuenta los espacios en blanco: [Hola|[como,estas]], haciendo lo mismo para cualquier otra frase que ingrese. Y lo segundo: Qué significa la T al darme esos valores _G1439,_G1442? Te agradezco mucho de antemano tu ayuda! Estoy comenzando a programar en SWI-Prolog! 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