#prolog
#пролог
Вопрос:
например, я создаю следующий список
length(List,5),
List :: 1..5,
Я хочу установить второй элемент списка, он выглядит как
List[1] :: 1..2
%Список, от 0 до 4
Я не знаю, как это реализовать?
большое спасибо 🙂
Ответ №1:
Например, используя in
оператор в Swi-prolog, я могу сделать вот так:
init_static(List) :- length(List, 5), List in 1..5, List = [_,Y|_], Y in 1..2.
если я заранее знаю, что мне нужны конкретные ограничения для второго элемента.
Для обобщения для любого индекса:
init_dynamic(I, List) :- length(List, 5), List in 1..5, length(L1, I), Y in 1..2, append(L1, [Y|_], List).
Итак, запрос для второго элемента:
init_dynamic(1, [1,2,4,3,5]).
true.
Я предполагаю, что вы можете проделать аналогичные вещи с ::
operator в других вариантах Prolog.