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

Здравствуйте, помогите решить лабу, очень срочно нужно.

1.2. Написать программу для вывода n-го элемента списка. Например: [1, 2, 3]  2-ой элемент равен 2.
1.3. Создать базу данных. База содержит факты произвольного вида. Удалить все дублирующиеся факты с выводом соответствующих сообщений (исходная и полученная базы данных находятся в файле).
Ответить с цитированием
  (#2 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,795
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 08.11.2006, 20:29

Все это есть на форуме.
Но Вы приведите свои попытки. В чем именно состоят Ваши затруднения?
Ответить с цитированием
  (#3 (permalink)) Старый
imported_Zic imported_Zic вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.11.2006
По умолчанию 09.11.2006, 19:00

Подскажите пожалуйста где это на форуме?
У самого ничего не выходит путнего, возможно потому что не понимаю как это сделать.
Ответить с цитированием
  (#4 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,795
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 09.11.2006, 20:27

Литературу почитайте. Там много всего про списки.
Для быстрого вхождения в дело можете посмотреть курс по Прологу на www.intuit.ru, а если пишете на VIP 5.2, то language.doc. Вообще в документации всегда много примеров есть, как работать со списками.
Ответить с цитированием
  (#5 (permalink)) Старый
imported_Zic imported_Zic вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.11.2006
По умолчанию 09.11.2006, 22:00

Всё дело в том что мне нужно срочно сдать это, не успеваю ничего :-(
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
imported_Zic imported_Zic вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.11.2006
По умолчанию 10.11.2006, 18:18

Вот решил таки 1.2.
Если кому интересно то вот код

Код:
DOMAINS
ilist=integer*
PREDICATES
delhead(ilist, ilist)
enumb(integer,ilist)
CLAUSES
delhead([H|T],T).
enumb(1,[H|T]):-write(H).
enumb(N,L):-M=N-1,delhead(L,T),enumb(M,T).

Помогите решить 1.3
вот мои попытки:
Код:
DOMAINS
n=integer
list=integer*
DATABASE
number (n)
PREDICATES
start
member(integer, list)
add(integer,list,list)
sort
CLAUSES
number(1).
number(2).
number(3).
number(4).
number(3).
start:-save ("in.txt").
member(X,[X|T]).
member(X,[H|T]):-member(X,T).
add(X,L,L):-member(X,L),!.
add(X,L,[X|L]).
sort:-consult("in.txt"),add(X,Y,[X|Y]),save("out.txt").
Ответить с цитированием
  (#7 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,795
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 11.11.2006, 20:00

Цитата:
Вот решил таки 1.2.
Хорошо. Можно упростить:
Код:
DOMAINS
ilist=integer*
PREDICATES
nth_element(integer,ilist,integer)
CLAUSES
nth_element(1,[A|_],A):- !.
nth_element(N,[_|L],A):- N1=N-1, nth_element(N1,L,A).
GOAL
nth_element(2,[1,2,3],A), write(A), nl.
Ответить с цитированием
  (#8 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,795
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 12.11.2006, 17:44

Насчет 1.3.
В принципе, мне кажется, можно делать разными способами.
Например, собрать все факты в список, удалить из списка повторно встречающиеся элементы и оставшиеся факты записать в базу фактов (либо в эту же базу, если перед этим ее очистить, либо в другую).
Либо сразу переписывать факты из одной базы в другую примерно так:
Код:
retract(fact_old(X,Y,...)), not(fact_new(X,Y,...)), assert(fact_new(X,Y,...)), fail.
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удвоить каждый элемент списка непонимаю Lisp 2 16.05.2011 14:36
Первый элемент вложенного списка Anksuna Prolog 3 03.11.2010 13:32
удаляющий предпоследний элемент списка denis120 Prolog 5 25.04.2010 20:23
Функция возводит элемент списка M в степень равную элементу из списка L imported_Witcher Lisp 2 15.05.2009 01:32
Первый элемент списка = последнему. MashUsha Prolog 1 04.06.2008 21:40
получить i - элемент списка toshkaexe Prolog 3 08.02.2008 20:32
Дерево элемент списка akvilon Prolog 4 07.12.2007 06:35
добавить элемент в произвольную позицию, исключить N-ый элемент из списка fire2004 Prolog 1 11.08.2006 16:50
предпоследний элемент списка imported_kisa Prolog 5 24.08.2005 02:42
Как удалить элемент с номером N из списка? March Prolog 1 10.01.2005 16:59
Как максимальный элемент списка Lizka Prolog 3 07.10.2004 13:18
Наименьший элемент списка Anonymous Prolog 1 16.01.2004 19:14



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