В результате работы программы должен получаться список списков - Prolog
Формулировка задачи:
Добрый день,есть такая програмка:
На выходе метода subset мы рекурсивно получаем элементы,к примеру вот:
А мне нужно, чтобы в итоге получались не отдельные элементы, а например [[1,2],[1,3],[3,2]...[n,n]] т.е список этих элементов... Помогите,пожалуйста...
Решение задачи: «В результате работы программы должен получаться список списков»
textual
Листинг программы
subsetList(N, K, L) :- findall(R, subset(N, K, R), L).
Объяснение кода листинга программы
subsetList(N, K, L)
- это название функции, которая рекурсивно ищет все подмножества чисел от 1 до N, содержащие K элементов и сохраняет их в списке L.findall(R, subset(N, K, R), L)
- это выражение, которое рекурсивно вызывает функциюsubset
, передавая ей аргументы N, K и R. Функцияfindall
сохраняет все значения R, которые возвращает функцияsubset
, в списке L.subset(N, K, R)
- это рекурсивная функция, которая генерирует все возможные подмножества чисел от 1 до N, содержащие K элементов и сохраняет их в списке R.R
- это переменная, которая используется для хранения текущего подмножества чисел.N
- это переменная, которая содержит общее количество чисел от 1 до N.K
- это переменная, которая содержит количество элементов, которые должны быть включены в подмножество.L
- это переменная, которая используется для хранения всех найденных подмножеств.- Значение
N
должно быть больше или равно K. - Значение
N
должно быть больше или равно 1. - Значение
K
должно быть больше или равно 1. - Значение
K
должно быть меньше или равно N. - Если N равно K, то результатом будет пустой список.
- Если N равно 1 и K равно 1, то результатом будет список, содержащий только число 1.
- Если N равно 1 и K больше 1, то результатом будет пустой список.
- Если N больше 1 и K равно 1, то результатом будет список, содержащий все числа от 1 до N.
- Если N больше 1 и K больше 1, то результатом будет список, содержащий все подмножества чисел от 1 до N, содержащие K элементов.
- Если N равно 1 и K равно 0, то результатом будет пустой список.
- Если N больше 1 и K равно 0, то результатом будет список, содержащий все числа от 1 до N.
- Если N равно 0 и K равно 1, то результатом будет пустой список.
- Если N равно 0 и K равно 0, то результатом будет список, содержащий пустой список.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д