Зворотний зв'язок

Обpобка масивiв

(LOOP

((= i k) lst3)

(SETQ j 0)

(LOOP

((= j l))

(SETQ lst3 (CHANGE lst3 (+ i j) (+ (MAS lst3 (+ i j)) (* (MAS lst1 i) (MAS lst2 j)))) )

(INCQ j) )

(INCQ i) ) )

Середовище muLisp має також вмонтовану функцiю MAKE-LIST, яку можна використовувати для створення спискiв заданого розмiру. Функцiя (MAKE-LIST n об'єкт список) утворює список з n елементiв, кожний з яких приймає значення об'єкту, приєднанi до списку. Якщо не задано перший аргумент, то по замовченню n = 0. Якщо другий аргумент не задано, то вважається об'єкт = NIL.

$ (MAKE-LIST 3 '(q w))$ (MAKE-LIST 4)$ (MAKE-LIST 3 5 '(2 3))

((q w)(q w)(q w))(NIL NIL NIL NIL)(5 5 5 2 3)

Наведену функцiю можна визначити наступним чином (iм'я змiнено на MAKE-LST):

(DEFUN MAKE-LST (N OBJ LST)

((AND (INTEGERP N) (PLUSP N))

(CONS OBJ (MAKE-LIST (SUB1 N) OBJ LST)) )

LST )

Функця (OBLIST) що не має аргументiв, утворює та повертає список активних на поточний момент символiв у системi. Символи розташованi в тому порядку, в якому вони прочитанi або згенерованi строковими функцiями: новi символi розташованi злiва вiд старих.

Задача 1. Дано неспадний список чисел x. Знайти кiлькiсть рiзних чисел серед елементiв цього масива. Hаписати функцiю (FIND_DIFF x)

Вказiвка: Шукане число на 1 бiльше за кiлькiсть тих чисел i из 1..n-1, для яких x[i] <> x[i+1].

(DEFUN find_diff (x)

((NULL (CDR x)) 1)

(IF (/= (CAR x) (CADR x)) (+ 1 (find_diff (CDR x))) (find_diff (CDR x)))

)

Задача 2. Дано масив цiлих чисел x. Знайти кiлькiсть рiзних чисел серед елементiв цього масиву. Вiдомо, що всi елементи масиву - числа вiд 1 до n. Часова оцiнка O(n). Hаписати функцiю (FIND_NUM_N n x).


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат