2016-12-01 2 views
0

Я пытаюсь написать предикат в GNU Prolog, который проверяет, правильно ли сформирована римская цифра, хранящаяся как список символов. А именно, если список содержит [i, c], [i, m] или [x, m], он недействителен. Например, если я прошел через [m, i, m], выход будет no.Как проверить, содержит ли список два атома рядом в Prolog?

Как бы я это сделал? Я знаю о функции члена/2; есть ли способ использовать это, чтобы проверить, содержит ли список список подписок?

ответ

0

найден встроенная функция Подсписка, что делает именно то, что мне нужно:

Подсписка ([я, м], [м, я, м]) ==>true

-1

Рассмотрит использование грамматика (). И использовать

:- set_prolog_flag(double_quotes, chars). 

, который позволяет вам писать "mcm" вместо [m,c,m]. См. this answer для получения дополнительной информации.

Смежные вопросы