Засоби та принципи програмування на Ліспі, Детальна інформація
Засоби та принципи програмування на Ліспі
(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)
((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
© Referats, Inc · All rights reserved 2021