una temas que prologos prologo presentacion para novela libros iniciar hacer frases ejemplo como caracteristicas amor input prolog

input - temas - que es un prologo



Lectura en varias palabras para prólogo (2)

Estoy ejecutando prolog vía poplog en Unix y me preguntaba si había una manera de leer en varias palabras (como encerrarlo en una cadena). Por ejemplo, read (X) solo permitirá que X sea 1 término. Sin embargo, si encierro la entrada del usuario con "", devolverá una lista de códigos de caracteres, ¿es este el método correcto ya que no puedo encontrar la manera de convertirlo nuevamente en una cadena legible?

También me gustaría poder ver si la cadena multicastulada contiene un valor establecido (por ejemplo, si contiene "he estado") y no estoy seguro de cómo podré hacer esto también.


Parece que la respuesta más básica y directa a su pregunta es que debe adjuntar su entrada en comillas simples, es decir:

read(''Multiple Words In A Single Atom'').

Las comillas dobles, como dijiste, siempre convierten a los códigos ASCII.


read/1 lee un elemento Prolog de la entrada estándar. Si ingresa una cadena encerrada en " , de hecho leerá esa cadena como un solo objeto, que es una lista de puntos de código ASCII o Unicode:

?- read(X). |: "I have been programming in Prolog" . X = [73, 32, 104, 97, 118, 101, 32, 98, 101|...].

Tenga en cuenta el período posterior a la cadena para indicar el final del término. Para convertir esto en un átomo (una "cadena legible"), use atom_codes :

?- read(X), atom_codes(C,X). |: "I have been programming in Prolog" . C = ''I have been programming in Prolog''.

Tenga en cuenta las comillas simples, por lo que este es un átomo. Pero entonces, un átomo es atómico (obviamente) y, por lo tanto, no se puede buscar. Para buscar, use cadenas de manera coherente (sin atom_codes ) y algo así como:

/* brute-force string search */ substring(Sub,Str) :- prefix_of(Sub,Str). substring(Sub,[_|Str]) :- substring(Sub,Str). prefix_of(Pre, Str) :- append(Pre, _, Str).

Entonces

read(X), substring("Prolog",X)

tiene éxito, por lo que se encontró la cadena.