Мне нужно получить последний символ строки. Например:Получение последнего символа строки в Prolog
?- last_char('abde', X).
X = 'e'
?- last_char('abdef', X).
X = 'f'
Не мог бы кто-нибудь помочь мне, пожалуйста? Я новичок в Prolog.
Мне нужно получить последний символ строки. Например:Получение последнего символа строки в Prolog
?- last_char('abde', X).
X = 'e'
?- last_char('abdef', X).
X = 'f'
Не мог бы кто-нибудь помочь мне, пожалуйста? Я новичок в Prolog.
с небольшой помощью sub_atom/5, очень удобный ISO встроено:
?- sub_atom(abdef, _, 1, 0, C).
C = f.
Вы можете использовать name
и reverse
, чтобы преобразовать строку в список и обратно:
last_char(S, X) :-
name(S, N),
reverse(N, [F|_]),
name(X, [F]).
В зависимости на вашей версии Prolog вам, возможно, придется импортировать библиотеку list
для предиката reverse
, например :- use_module(library(lists)).
для SICStus.
Я также попытался использовать имя/2 и reverse/2, но он возвращает код char, а не сам символ. – renatov
@renatov Вот почему я снова использовал 'name', чтобы преобразовать его. Вы можете использовать либо строку, либо список символов в качестве входного аргумента, а другую в качестве выходного аргумента. – l4mpi
Отличное решение, я всегда узнаю о Prolog, прочитав ваши ответы. Я по-прежнему писал свою попытку, хотя она немного читаема :) – l4mpi
Отличное решение! Большое спасибо. Я новичок в Prolog, я пытаюсь изучить все сам. Ты действительно помог мне, спасибо! – renatov
@ l4mpi: спасибо. Я подробно просмотрел детали, особенно об отличиях в сравнении с строками ... – CapelliC