Определить, возможно ли построить из заданных костяшек домино непрерывные цепочки - Prolog

Формулировка задачи:

Совершенно не знаю синтаксис языка Prolog, но надо написать программу для зачёта. d(2,6) это домино Есть задача: "Написать программу, которой дается набор костяшек домино, а она определяют, возможно ли построить из них непрерывные цепочки или нет" Пример работы: ?- playout([d(2,6),d(0,4),d(2,4),d(1,3),d(1,6),d(0,1),d(4,4)]). true Потому, что можно разместить в таком порядке [d(1,0),d(0,4),d(4,4),d(4,2),d(2,6),d(6,1),d(1,3)] ?- playout([d(0,3),d(1,2),d(5,6),d(5,5),d(0,2),d(0,5),d(3,5)]). false.

Код к задаче: «Определить, возможно ли построить из заданных костяшек домино непрерывные цепочки - Prolog»

textual
playout_d2(Ds) :-
    select1(d(D1, D2), Ds, Ds1),
    ( P1 = d(D1, D2)
    ; P1 = d(D2, D1)
    ),
    playout_d2(Ds1, P1),
    !.
 
playout_d2([], _).
playout_d2(Ds, P1) :-
    select1(d(D1, D2), Ds, Ds1),
    ( P1 = d(_, D1), P2 = d(D1, D2)
    ; P1 = d(_, D2), P2 = d(D2, D1)
    ),
    playout_d2(Ds1, P2).
    
select1(Elem, [Elem | Tail], Tail).
select1(Elem, [Head | Tail], [Head | Rest]) :-
    select1(Elem, Tail, Rest).

7   голосов, оценка 3.429 из 5


СОХРАНИТЬ ССЫЛКУ