3

我需要获取字符串的最后一个字符。例如:

?- last_char('abde', X).
X = 'e'

?- last_char('abdef', X).
X = 'f'

有人可以帮我吗?我是 Prolog 的新手。

4

2 回答 2

4

在sub_atom /5的帮助下,一个非常方便的内置 ISO:

?- sub_atom(abdef, _, 1, 0, C).
C = f.
于 2013-11-01T20:31:36.893 回答
1

您可以使用nameandreverse将字符串转换为列表并返回:

last_char(S, X) :-
    name(S, N),
    reverse(N, [F|_]),
    name(X, [F]).

根据您的 Prolog 版本,您可能需要list为谓词导入一个库reverse,例如:- use_module(library(lists)).SICStus。

于 2013-11-01T20:35:49.780 回答