|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.12.2018, 10:56 | #1 |
Регистрация: 06.12.2018
Сообщений: 3
|
Подмножества списка, равные заданной сумме (Prolog)
Товарищи, добрый день.
Есть задача: Определите предикат subsum(+Set,+Sum,?SubSet) такой, что Set является списком чисел, SubSet - подмножеством этих чисел, а сумма чисел в SubSet равна Sum, например: ?- subsum([1,2,5,3,2],5,Sub). Sub = [1,2,2]; Sub=[2,3]; Sub=[5]; ... Есть код, который решает задачу, но остается проблема с удалением одинаковых ответов. Как можно это организовать? Код:
|
06.12.2018, 12:42 | #2 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Формально это не одинаковые ответы, в них двойки - разные.
Разве условие задачи требует отсеивать эти повторения? Боюсь, в две строчки это не выйдет. Хотя.. Код:
Код:
Последний раз редактировалось Black Fregat; 06.12.2018 в 12:55. |
06.12.2018, 18:21 | #3 |
Регистрация: 06.12.2018
Сообщений: 3
|
Спасибо. Я же правильно понимаю, что таким образом мы вносим по очереди в список Skip те элементы, для которых все варианты в дальнейшем исчерпаны и для которых просмотр не имеет смысла? А каким образом в SWI Prolog можно вызывать ответы до false не пользуясь точкой с запятой или кнопкой Next в онлайн версии?
|
07.12.2018, 01:50 | #4 | |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Точнее - для которых выбор будет вести к повторам.
Повторы возникают из-за дублей одинаковых элементов в списке. Смысл решения в том, что мы перестаём включть в список элементы, хотя бы один раз пропущенные Цитата:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найдите трехзначные числа, равные сумме кубов своих цифр. Подсчет суммы кубов организовать в виде функции. | Julia_Sv | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 02.04.2016 13:32 |
Списковый алгоритм решения задачи о сумме подмножества | Maria_Z | Помощь студентам | 0 | 27.05.2015 18:28 |
Prolog. Клонирование списка. | java_shkiper | Помощь студентам | 5 | 13.10.2013 20:57 |
Prolog.Сортировка списка | KLOP | Помощь студентам | 3 | 23.12.2012 22:35 |
Задача на Pascal - вывестикомбинации (подмножества) цифр заданной длины | aless23 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 03.12.2012 09:05 |