Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу подсписки порядка N списка
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
imported_one imported_one вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.12.2007
Post 15.12.2007, 23:49

Помогите пожалуйста с простенькой задачкой

Определить все подсписки порядка N, заданного списка.
пример-
список a,c,3,[1,2].
порядок подсписка - 2
ответ - a,c
c,3
3,[1,2]

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

Раз задача "простенькая", почему же Вы сделать ее не можете?
Ну разбирайтесь:
Код:
sublist(0,_,[]):- !.
sublist(N,[A|L],[A|SubL]):-
    N1 is N-1,
    prefix(N1,L,SubL).
sublist(N,[_|L],SubL):-
    sublist(N,L,SubL).

prefix(0,_,[]):- !.
prefix(N,[A|L],[A|P]):- 
    N1 is N-1,
    prefix(N1,L,P).
Ответить с цитированием
  (#3 (permalink)) Старый
imported_one imported_one вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.12.2007
По умолчанию 17.12.2007, 01:15

Пожалуйста, не могли бы вы объяснить её работу.
Самому никак не разобраться
Ответить с цитированием
  (#4 (permalink)) Старый
Кошмар Кошмар вне форума
Member
 
Сообщений: 2,694
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.04.2005
По умолчанию 17.12.2007, 13:36

Alison, а не перемудрила ли ты?

Код:
sublist(0,_,[]):- !.
sublist(N,L,SubL):-
    prefix(N,L,SubL).
sublist(N,[_|L],SubL):-
    sublist(N,L,SubL).

prefix(0,_,[]):- !.
prefix(N,[A|L],[A|P]):- 
    N1 is N-1,
    prefix(N1,L,P).
(1 изменение в sublist)

(Под рукой нет интерпретатора, поэтому проверить, к сожалению, не могу)
Ответить с цитированием
  (#5 (permalink)) Старый
imported_one imported_one вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.12.2007
По умолчанию 17.12.2007, 16:01

У меня почему-то возникают ошибки при работе программы (после ввода списка L и порядка подсписков N)
Текст программы:
Код:
start:-write('Введите список:'),read(L),write('Введите порядок:'),read(N),
sublist(N,L),write(SubL).

sublist(0,_,[]):- !.
sublist(N,L,SubL):-
    prefixx(N,L,SubL).
sublist(N,[_|L],SubL):-
    sublist(N,L,SubL).

prefix(0,_,[]):- !.
prefix(N,[A|L],[A|P]):- 
    N1 is N-1,
    prefix(N1,L,P).
В чем может быть дело?
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
imported_one imported_one вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.12.2007
По умолчанию 17.12.2007, 21:12

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

Опечатка у Вас в имени предиката prefixx, а надо prefix.
Ответить с цитированием
  (#8 (permalink)) Старый
imported_one imported_one вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.12.2007
По умолчанию 18.12.2007, 19:22

спасибо большое программа вроде работает,
а не знаете, что надо сделать стобы выводились списки порядка, больше либо равного N))) плиз
Ответить с цитированием
  (#9 (permalink)) Старый
imported_one imported_one вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.12.2007
По умолчанию 18.12.2007, 19:22

спасибо большое программа вроде работает,
а не знаете, что надо сделать стобы выводились списки порядка, больше либо равного N))) плиз
Ответить с цитированием
  (#10 (permalink)) Старый
imported_one imported_one вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.12.2007
По умолчанию 18.12.2007, 19:22

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

Например, так:
Код:
подсписок(Список,N,Подсписок):-
    просто_подсписок(Список,Подсписок),
    длина(Подсписок,Длина),
    Длина>=N.
Как найти просто подсписки - напишите отдельно. На форуме масса примеров.
Ответить с цитированием
  (#12 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,781
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 19.12.2007, 19:11

Например, так:
Код:
подсписок(Список,N,Подсписок):-
    просто_подсписок(Список,Подсписок),
    длина(Подсписок,Длина),
    Длина>=N.
Как найти просто подсписки - напишите отдельно. На форуме масса примеров.
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,781
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 19.12.2007, 19:11

Например, так:
Код:
подсписок(Список,N,Подсписок):-
    просто_подсписок(Список,Подсписок),
    длина(Подсписок,Длина),
    Длина>=N.
Как найти просто подсписки - напишите отдельно. На форуме масса примеров.
Ответить с цитированием
  (#14 (permalink)) Старый
imported_one imported_one вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.12.2007
Angry 20.12.2007, 20:57

вот так не работает, помогите плиз , где тут ошибка? срочно очень

Код:
start:-write('Введите список:'),read(L),write('Введите порядок:'),read(N),
subl(L,N,SubL),write(SubL).
subl(L,N,SubL):-
      sublistt(SubL,L),
      length(SubL,D), 
       D>=N.
sublistt(SubL,L):-
            conc(L1,L2,L),
            conc(SubL,L3,L2).
conc([X|L1],L4,[X|L5]):-
conc(L1,L4,L5).
Ответить с цитированием
  (#15 (permalink)) Старый
imported_one imported_one вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.12.2007
Angry 20.12.2007, 20:57

вот так не работает, помогите плиз , где тут ошибка? срочно очень

Код:
start:-write('Введите список:'),read(L),write('Введите порядок:'),read(N),
subl(L,N,SubL),write(SubL).
subl(L,N,SubL):-
      sublistt(SubL,L),
      length(SubL,D), 
       D>=N.
sublistt(SubL,L):-
            conc(L1,L2,L),
            conc(SubL,L3,L2).
conc([X|L1],L4,[X|L5]):-
conc(L1,L4,L5).
Ответить с цитированием
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить все подсписки второго уровня Rushan Lisp 2 11.01.2010 10:55
Пролог.Подсписки. Нужна помощь... point135 Prolog 0 14.12.2009 17:37
Разделение списка на подсписки icnsample Prolog 12 15.09.2009 16:13
Дифур 1го порядка zagi Prolog 5 30.04.2008 15:45
Включить во все имеющиеся подсписки заданной глубины на заданную позицию атом ReaLCosmo Lisp 4 05.06.2007 07:55
Кривые третьего порядка Andrey~! Вопросы начинающих программистов 27 10.05.2007 22:39
Производная порядка N Shadow1958 Prolog 5 17.04.2007 21:52
Написать функцию, удаляющую из исходного списка подсписки K@trin Lisp 10 19.03.2007 17:58
Дифференциальное уравнение 16 порядка kesh Алгоритмы 25 29.01.2006 12:06
L – список, элементами которого являются списки. Удалить из него все подсписки drunkenelf Lisp 2 28.12.2005 01:00
Определитель n-uj порядка nikita2 С/С++ 4 07.10.2004 23:48
Удалить подсписки из списков как реализовать Leon! Lisp 4 18.05.2004 15:27



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