Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Генерация k-элементных подмножеств:чуть подправить, Генерация k-элементных подмножеств:  
:(
    Опции темы
Dux987
Дата 3.12.2008, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 3.12.2008

Репутация: нет
Всего: нет



Одна из стандартных задач - генерировать все K-элементные подмножества из множества {1,2,...,N}. N и K вводятся пользователем.

есть набросок (Tinefol):

subset(K, N):- subset([ ], 0, K, N).

subset(Generated, Len, K, N):-
    Len < K,
    int(Elem, N), 
    not(member(Elem, Generated)),
    NewLen is Len + 1,
    subset([Elem | Generated], NewLen, K, N).
subset(Set, Len, K, _) :-
    Len = K,
    write(Set).

int(N, N):- % Генератор числа в диапазоне от 1 до указанного во втором аргументе
    N >= 1.
int(K, N):-
    N >= 1,
    M is N - 1,
    int(K, M).

member(E, [E | _]). % Предикат принадлежности множеству
member(E, [_ | T]):-
    member(E,T).

Но такая программа при запросе ?-subset(2,5) например, выдаёт ошибку - предикат subset возможно не определён.

Как правильно написать секцию predicates? Как написать, что параметром предиката является список? Спасибо заранее))

Добавлено через 6 минут и 28 секунд
также жалуется на то, что не определено Generated в subset(Generated, Len, K, N). Как его ввести?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума Prolog
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Prolog | Следующая тема »


 




[ Время генерации скрипта: 0.0766 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.