Засоби та принципи програмування на Ліспі, Детальна інформація

Засоби та принципи програмування на Ліспі
Тип документу: Реферат
Сторінок: 7
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 12.9
Скачувань: 1187
(DEFUN GEN1 n)

((ZEROP n) NIL)

(CONS 1 (GEN1 (- n 1))) )

(DEFUN NEXT (lst n)

((< (CAR lst) n) (CONS (+ (CAR lst) 1) (CDR lst)))

((NULL (CDR lst)) NIL)

(CONS 1 (NEXT (CDR lst) n))

Шукана функція має вигляд:

(DEFUN P12 k n)

(SETQ lst (GEN1 k))

(LOOP

((< (LENGTH lst) k))

(PRIN1 lst) (TERPRI)

(SETQ lst (NEXT lst n))

) )

(DEFUN P12BEST (n k lst c)

((ZEROP n) (PRIN1 lst) (TERPRI))

(PUSH 1 c)

(LOOP

((> (CAR c) k))

(P12BEST (- n 1) k (CONS (CAR c) lst) c)

(SETQ c (CONS (+ 1 (CAR c)) (CDR c)))

) (POP c) )

3. Надрукувати всі підмножини множини {1..n}. (P13 n).

Оскільки всі підмножини будь-якої множини {1..n} перебувають у взаємно однозначній відповідності зі всіма послідовностями з 0 та 1 довжини n, то ця задача зводиться до задачі 1.1. Функція (P13 n) наведена в 1.1. Тільки замість виведення списку з 0 та 1 необхідно виводити номери всіх елементів списку, які дорівнюють 1. Функція (PRN13 lst) виводить необхідні номери елементів.

(DEFUN PRN13 (lst)

(SETQ i 0)

(LOOP

((NULL lst))

(INCQ i)

The online video editor trusted by teams to make professional video in minutes