Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу работа со списками
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Novichok92 Novichok92 вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.10.2009
Thumbs down 10.11.2009, 18:53

Создайте предикат, порождающий по заданному натуральному числу N список, состоящий из натуральных чисел от 1 до N (по возрастанию).
Помогите решить!!!!!!
Ответить с цитированием
  (#2 (permalink)) Старый
Грымзик Грымзик вне форума
Member
 
Сообщений: 273
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
Регистрация: 25.09.2009
По умолчанию 10.11.2009, 19:04

Код:
?-gen(L,10),write(L).

gen(L,N):- gen(L,1,N).

gen([N],N,N).
gen([S|Tail],S,N):- S1 is S+1, gen(Tail,S1,N).
Ответить с цитированием
  (#3 (permalink)) Старый
Novichok92 Novichok92 вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.10.2009
По умолчанию 10.11.2009, 19:17

А где здесь список?Ты не можешь объяснить что сделал?
Ответить с цитированием
  (#4 (permalink)) Старый
Грымзик Грымзик вне форума
Member
 
Сообщений: 273
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
Регистрация: 25.09.2009
По умолчанию 10.11.2009, 19:26

Не очень поняла вопрос, что значит где список? Список
везде это первый параметр. В трехпараметровым gen
второй параметр -текущее значение, а третий - N, последнее значение.
Ответить с цитированием
  (#5 (permalink)) Старый
xonix xonix вне форума
Member
 
Сообщений: 429
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.03.2007
По умолчанию 10.11.2009, 19:51

[ot] Я тут только что допер как строить в прологе ленивые бесконечные списки (потоки) ;-) :-) :roll: . Приведу примерчик под эту задачу.
Имхо, занятная штуковина.

Код:
cons_stream(ResStream, Head, Tail, TailProc) :-
    when(nonvar(ResStream), 
        (ResStream = [Head | Tail],
         TailProc
        )).

add_streams(S1, S2, S) :-
    when(nonvar(S), 
      (S1 = [H1 | T1],
       S2 = [H2 | T2],
       H is H1 + H2,
       add_streams(T1,T2,T),
       S = [H | T]
      )).

ones1(Ones) :-
    cons_stream(Ones,
             1, OtherOnes,
             (ones1(OtherOnes)     
             )).

% yes, infinite list of integers!!!
integers1(Ints) :-
    cons_stream(Ints, 
            1, IntsTail,
            (integers1(Ints1),
             ones1(Ones),
             add_streams(Ints1, Ones, IntsTail)
            )).

take(N, Stream, ResultList) :-
    length(ResultList, N),
    append(ResultList, _, Stream).


oneToN(N, Res) :-
    integers1(Ints),
    take(N, Ints, Res).
Код:
?- oneToN(20, L),write(L).
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
L = [1, 2, 3, 4, 5, 6, 7, 8, 9|...].
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Грымзик Грымзик вне форума
Member
 
Сообщений: 273
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
Регистрация: 25.09.2009
По умолчанию 10.11.2009, 20:41

Novichok92, у меня к вам немного грубоватый вопрос.
Почему вы, уже имея решение, обращаетесь с тем же
вопросом в другие форумы? Насколько мне помнится,
вам надо писать на visual prolog, но ведь под него
легко переделать. Просто, не обижайтесь, но по-моему
надо и самой что-то делать, уже больше половины семестра
прошло, а вы с такими прямо скажем элементарными
предикатами обращаетесь и даже не хотите немного
потрудиться и исправить.
Ответить с цитированием
  (#7 (permalink)) Старый
Novichok92 Novichok92 вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.10.2009
По умолчанию 10.11.2009, 20:54

Да я была бы очень рада все переделать и доделать,я не против.Я просто вообще не понимаю пролог(((((((((((((((((((((((((((((((((((((((((
И даже лекции мне не помогают-никак не могу понять.Нам вообще не объясняют-думают что мы изучали его раньше.Поэтому и возникают такие глупые вопросы!!!!!!!!!!!!!!!!1
Ответить с цитированием
  (#8 (permalink)) Старый
Novichok92 Novichok92 вне форума
Member
 
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.10.2009
По умолчанию 25.11.2009, 08:13

Пожалуйста помогите решить задачку!!!!!!!!!!!
Или в этом коде помогите записать в predicates и domains все использованные переменые!!!!!!!
gen(L,N):- gen(L,1,N).
gen([N],N,N).
gen([S|Tail],S,N):- S1 is S+1, gen(Tail,S1,N).
Я никак не могу это понять!!!!!!!!!!!!! :wall: :wall: :wall: :wall:
Ответить с цитированием
  (#9 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,781
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 25.11.2009, 12:11

Учитесь пользоваться поиском, пригодится.
http://www.hardforum.ru/t65368
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со списками 3ai4i6ka Prolog 0 20.10.2011 22:12
Работа со списками. BLACKRIDER Prolog 3 10.05.2010 12:34
работа со списками Novichok92 Prolog 1 10.11.2009 19:15
работа со списками FEAR Prolog 8 09.11.2009 01:08
работа со списками ShokoLad Prolog 18 24.07.2009 02:53
работа со списками из_семи Prolog 12 04.05.2009 01:22
Работа со списками wert30 Prolog 2 24.01.2009 16:04
Работа со списками Михаил_1987 Prolog 3 19.01.2009 09:18
Работа со списками. status Prolog 17 01.11.2008 13:06
Работа со списками izen Prolog 1 04.05.2008 21:55
Работа со списками NRGize Prolog 2 25.05.2007 00:43
Работа с списками ViL Prolog 1 15.04.2006 08:51



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