Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Prolog] Пожалуйста помогите с задачкой


Автор: GiDe0n 26.5.2007, 21:51
Здравствуйте.

На зачете в университете преподаватель потребовал решить задачку на языке Prolog (к сожалению для меня это совсем в новинку, а времени разобраться как следует нет ;( ).

Вот такая вот задача: Проверить, можно ли один список получить из другого путем удаления двух рядом стоящих элементов.

Заранее благодарен за любую помощь.

ЗЫ Если возможно, то поясните решение комментариями

Автор: cherep 27.5.2007, 03:23
У меня получилось как-то так:

Код

isL(List1, List2):-
  append(F, L, List2),
  write(F),write(+),write(L),nl,
  append(F, L1, List1),
  (append(L, [_, _], L1);append([_,_], L, L1)).


Применение:
Код

57 ?- isL([a,b,c,d,e,f], [a,b,c,f]).
[]+[a, b, c, f]
[a]+[b, c, f]
[a, b]+[c, f]
[a, b, c]+[f]

Yes
58 ?- isL([a,b,c,d,e,f], [a,b,c,g]).
[]+[a, b, c, g]
[a]+[b, c, g]
[a, b]+[c, g]
[a, b, c]+[g]
[a, b, c, g]+[]

No


Вывод можно закомментировать. Код для SWI-Prolog

Автор: GiDe0n 27.5.2007, 21:43
cherep, Огромное Вам спасибо!  smile 

Автор: saint111 28.5.2007, 20:38
Помогите, очень надо решить задачу!!!!!!!!!!!

Весть о том, что Холмс умеет «вычислять» фамилии людей быстро разнеслась среди отдыхающих на пляже. 
    Желающих проверить эти способности Холмса было много. Однажды, например, к Холмсу подошли пятеро молодых людей, 
    которые представились как Леонид, Сергей, Николай, Олег и Петр. Они сказали, что фамилии у них такие: Антонов, 
    Борисов, Васильев, Дроздов и Иванов. Кроме того, они сообщили о себе такие сведения.
        Петр знаком со всеми кроме одного. Борисов знаком только с двумя. Леонид знает только одного из всех. 
    Дроздов и Сергей незнакомы. Николай и Иванов хорошо знают друг друга. Сергей, Николай и Олег давно знакомы между собой. 
    Антонов знаком только с Петром.
        Холмс сказал, что этих сведений достаточно. Через некоторое время он действительно установил фамилии этих ребят. 
    Каким же был ответ Холмса?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)