Рекурсия: заполнение одномерного массива целыми случайными числами без повторений - Prolog
Формулировка задачи:
Помогите, пожалуйста, с задачей.
1. Описать функцию для заполнения одномерного массива целыми случайными числами без повторений. Использовать рекурсию.
Решение задачи: «Рекурсия: заполнение одномерного массива целыми случайными числами без повторений»
textual
Листинг программы
domains n=integer lrand=n* predicates random_list(lrand,n) clauses random_list([],0). random_list([H|T],N):- N>0, random(10,H), N1=N-1, random_list(T,N1). goal random_list(X,10).
Объяснение кода листинга программы
В коде используется язык программирования Prolog.
domains
- определения типов переменных:n=integer
- переменнаяn
является целым числом;lrand=n*
- переменнаяlrand
является произвольным (случайным) целым числом, умноженным наn
.
predicates
- определения функций:random_list(lrand,n)
- рекурсивная функция для заполнения спискаlrand
случайными целыми числами без повторений.
clauses
- определения правил:random_list([],0).
- базовый случай: пустой список приравнивается нулю.random_list([H|T],N):-
- рекурсивный случай: списокH|T
(голова и хвост списка) приравниваетсяN
(остаток числаn
, вычтенный изN
).random(10,H)
- вызов функцииrandom
для получения случайного целого числа от 0 до 9.N1=N-1
- вычисление нового значенияN1
какN-1
.random_list(T,N1).
- рекурсивный вызов функцииrandom_list
для спискаT
и значенияN1
.
goal
- основная цель: заполнить списокX
случайными целыми числами без повторений длиной в 10 элементов. Таким образом, код рекурсивно заполняет список случайными целыми числами без повторений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д