Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу первый список - префикс второго
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
azg azg вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.11.2007
По умолчанию 21.11.2007, 16:13

Народ, помогите задачку решить?

Заданы два списка. Определить является ли первый список префиксом второго (т.е. началом второго списка)
Ответить с цитированием
  (#2 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,781
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 21.11.2007, 16:30

Попробуйте записать на Прологе следующие два правила:

- пустой список является префиксом любого списка;
- первый список является префиксом второго, если совпадают головы этих списков и хвост первого списка является префиксом хвоста второго.

(если не получится, приведите здесь свои попытки)
Ответить с цитированием
  (#3 (permalink)) Старый
azg azg вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.11.2007
По умолчанию 21.11.2007, 17:18

что-то такое получается...

Код:
domains 
  list=integer*
predicates
  prefix(list,list)
clauses
  prefix([],List).  
  prefix([H|T],List):-prefix(H,[H|_]),prefix(T,[_|T]).
Ответить с цитированием
  (#4 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,955
Сказал(а) спасибо: 2
Поблагодарили 302 раз(а) в 302 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 22.11.2007, 00:22

Второй клоз неверен.
Вот Вам правильное начало второго клоза:
Код:
prefix([H|T],[H|List]):-prefix(    ,    ).
Пустоты (неуказанные аргументы) попробуйте дописать сами.
Ответить с цитированием
  (#5 (permalink)) Старый
azg azg вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.11.2007
По умолчанию 23.11.2007, 03:00

Спасибо, разобрался.

Код:
domains 
  list=integer*
predicates
  prefix(list,list)
clauses
  prefix([],_).
  prefix([H|T1],[H|T2]):-prefix(T1,T2).
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задан список произвольного уровня вложенности,превратить его в список атомов Дрон Lisp 6 19.11.2014 22:38
первый раз в первый класс bes Любые вопросы от новичков 12 29.11.2011 21:30
разгон компа первый раз в первый класс!! vany_33 Охлаждение и разгон 3 16.04.2011 02:28
Как возвратить список из головы второго и хвоста первого neud Lisp 2 24.01.2011 01:35
программа которая берет список и создает список другой из этого же списка + исходный Ma3day Prolog 5 26.11.2010 15:40
Задан список произвольного уровня вложенности, сформировать из него новый список Kolobov_Anton Lisp 3 26.03.2009 22:29
При подключении второго жесткого диска не видится первый. Spore Техническая поддержка 5 13.07.2008 14:13
Префикс и суфикс как с ними работать fromrus Lisp 7 11.05.2008 22:50
Списки(префикс?Суфикс?) fromrus Prolog 7 04.05.2008 15:08
Мой первый мод или первый блин комом zyza75 Моддинг 36 06.03.2008 04:04
префикс-функция malamut Prolog 2 27.11.2007 12:36
Переслать командную строку из второго экземпляра программы в первый Sirko Delphi 1 27.12.2006 18:07



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов