Определить, возможно ли построить из заданных костяшек домино непрерывные цепочки - 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»
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
СОХРАНИТЬ ССЫЛКУ