В результате работы программы должен получаться список списков - Prolog

Узнай цену своей работы

Формулировка задачи:

Добрый день,есть такая програмка:
На выходе метода subset мы рекурсивно получаем элементы,к примеру вот: А мне нужно, чтобы в итоге получались не отдельные элементы, а например [[1,2],[1,3],[3,2]...[n,n]] т.е список этих элементов... Помогите,пожалуйста...

Решение задачи: «В результате работы программы должен получаться список списков»

textual
Листинг программы
    subsetList(N, K, L) :-
        findall(R, subset(N, K, R), L).

Объяснение кода листинга программы

  1. subsetList(N, K, L) - это название функции, которая рекурсивно ищет все подмножества чисел от 1 до N, содержащие K элементов и сохраняет их в списке L.
  2. findall(R, subset(N, K, R), L) - это выражение, которое рекурсивно вызывает функцию subset, передавая ей аргументы N, K и R. Функция findall сохраняет все значения R, которые возвращает функция subset, в списке L.
  3. subset(N, K, R) - это рекурсивная функция, которая генерирует все возможные подмножества чисел от 1 до N, содержащие K элементов и сохраняет их в списке R.
  4. R - это переменная, которая используется для хранения текущего подмножества чисел.
  5. N - это переменная, которая содержит общее количество чисел от 1 до N.
  6. K - это переменная, которая содержит количество элементов, которые должны быть включены в подмножество.
  7. L - это переменная, которая используется для хранения всех найденных подмножеств.
  8. Значение N должно быть больше или равно K.
  9. Значение N должно быть больше или равно 1.
  10. Значение K должно быть больше или равно 1.
  11. Значение K должно быть меньше или равно N.
  12. Если N равно K, то результатом будет пустой список.
  13. Если N равно 1 и K равно 1, то результатом будет список, содержащий только число 1.
  14. Если N равно 1 и K больше 1, то результатом будет пустой список.
  15. Если N больше 1 и K равно 1, то результатом будет список, содержащий все числа от 1 до N.
  16. Если N больше 1 и K больше 1, то результатом будет список, содержащий все подмножества чисел от 1 до N, содержащие K элементов.
  17. Если N равно 1 и K равно 0, то результатом будет пустой список.
  18. Если N больше 1 и K равно 0, то результатом будет список, содержащий все числа от 1 до N.
  19. Если N равно 0 и K равно 1, то результатом будет пустой список.
  20. Если N равно 0 и K равно 0, то результатом будет список, содержащий пустой список.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы