Рекурсия: заполнение одномерного массива целыми случайными числами без повторений - 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 элементов. Таким образом, код рекурсивно заполняет список случайными целыми числами без повторений.