Запрос относительно конкатенации - PullRequest
0 голосов
/ 26 февраля 2011

Я знаю, что мы можем объединить атомы, используя atom_concat(Para1,Para1,Final).. Существует ли какая-либо функция, доступная в Прологе, которая может выполнять обратную операцию, означающую, что она принимает входные данные в качестве атома и предоставляет два атома, один из которых является последним символом атомавторой остается один.например.

?- rev_atom_concat(likes,Para1,Para2).<br> Para1 = like, Para2 = s

Я не уверен, что это действительно возможно или нет ..?

1 Ответ

2 голосов
/ 26 февраля 2011

Для этого вы можете использовать sub_atom .sub_atom извлекает часть атома.Синтаксис:

sub_atom(+Atom, ?Before, ?Len, ?After, ?Sub)

Атом - начальный атом;Суб-податом.Извлечение работает так:

<************************ Atom ************************>
<***** Prefix *****><***** Sub *****><**** Suffix *****>
<-- before chars --><-- len chars --><-- after chars -->

Например, чтобы извлечь последний символ:

?- sub_atom(likes, _, 1, 0, S).
S = s.

Например, чтобы извлечь все символы, кроме последнего:

?- sub_atom(likes, 0, _, 1, S).
S = like.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...