2014-10-20 2 views
0

я нашел следующее упражнение на www.learnprolognow.org, я пытался решить ее, но не смог:Prolog упражнения, идентичные списки

Написать предикат swap12(List1,List2), который проверяет, является ли List1 идентичен List2, за исключением того, что первые два элемента обмениваются.

Что я сейчас:

swap12([X,Y],[Y,X]). 
swap12([X,Y|T],[Y,X|Z]) :- 
+0

В чем проблема? Вы не указываете. – APerson

+0

@APerson Я добавил то, что у меня есть – Stanko

+1

Вы очень близки. Почему два хвоста ('T' и' Z') различаются в вашем втором предложении предиката, если они являются тем же самым списком, кроме первых двух элементов, замененных? – lurker

ответ

0

Вы почти там: вам просто нужно установить, что элементы после первых двух в каждом списке одинаковы (подсказка: если оба могут быть представлены две вещи по той же переменной, они одинаковы). На самом деле вам нужно только одно правило.

+0

swap12 ([X, Y | T], [Y, X | Z]: - T = Z.? – Stanko

+0

Вы не можете проверить себя? –

+0

В настоящее время не работает ноутбук, но будет проверять через 30 минут – Stanko

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