Числовi функцiї, Детальна інформація
Числовi функцiї
T T T
8. Зсув.
(SHIFT m n) - зсув числа m на n бiтiв.
$ (SHIFT 3 1) $ (SHIFT 3 -1) $ (GCD 24 66 600) $ (LCM 24 66 600)
6 1 6 6600
9. НСД, НСК.
(GCD n1 n2 ... nM), (LCM n1 n2 ... nM).
Цi функцiї знаходять вiдповiдно найбiльший спiльний дiльник M чисел та найменше спiльне кратне.
Аpифметичнi задачi
Задача 1. Список lst має 100 елементiв, якi дорiвнюють 0 або 1. Написати функцiю (CHANGE01 lst), яка повертає список, у якому всi елементи 0 замiненi на 1, а 1 - на 0. Необхiдно замiсть використання умовного оператора застосувати дiю X := 1 - X.
(DEFUN CHANGE01 (lst)
((NULL lst) NIL)
(CONS (- 1 (CAR lst)) (CHANGE01 (CDR lst))) )
Задача 2. Змiнним a та b присвоєнi числа. Записати функцiю в одному рядку (не визначати цю функцiю), в результатi якої змiннi обмiнюються своїми значеннями. Використовувати допомiжнi змiннi забороняється.
$ (SETQ a 2 b 3) // a = 2, b = 3
$ (SETQ a (+ a b) b (- a b) a (- a b)) // a = 3, b = 2
Задача 3. Вiдомо, що lst - список, який мiстить неспадну послiдовнiсть чисел. Функцiя (NUM lst) повинна обчислювати кiлькiсть рiзних чисел у ньому.
(DEFUN NUM (lst)
((NULL (CDR lst)) 1)
((/= (CAR lst) (CADR lst)) (+ 1 (NUM (CDR lst))))
(NUM (CDR lst)) )
Задача 4. Списки lst1 та lst2 мiстять строго зростаючi послiдовностi чисел. Знайти кiлькiсть спiльних елементiв у цих масивах. Часова оцiнка алгоритму повинна дорiвнювати O(K+L), де K та L - довжини спискiв lst1 та lst2 вiдповiдно.
(DEFUN COMELEMENT (lst1 lst2)
((OR (NULL lst1) (NULL lst2)) 0)
((< (CAR lst1) (CAR lst2)) (COMELEMENT (CDR lst1) lst2))
((> (CAR lst1) (CAR lst2)) (COMELEMENT lst1 (CDR lst2)))
(+ 1 (COMELEMENT (CDR lst1) (CDR lst2))) )
В файлi irratnal.lsp мiститься великий набiр iррацiональних та трансцендентних функцiй. Аргументи тригонометричних функцiй задаються в радiанах.
1. (EXP x) експонента e^x
2. (EXPT x y) степiнь x^y
8. Зсув.
(SHIFT m n) - зсув числа m на n бiтiв.
$ (SHIFT 3 1) $ (SHIFT 3 -1) $ (GCD 24 66 600) $ (LCM 24 66 600)
6 1 6 6600
9. НСД, НСК.
(GCD n1 n2 ... nM), (LCM n1 n2 ... nM).
Цi функцiї знаходять вiдповiдно найбiльший спiльний дiльник M чисел та найменше спiльне кратне.
Аpифметичнi задачi
Задача 1. Список lst має 100 елементiв, якi дорiвнюють 0 або 1. Написати функцiю (CHANGE01 lst), яка повертає список, у якому всi елементи 0 замiненi на 1, а 1 - на 0. Необхiдно замiсть використання умовного оператора застосувати дiю X := 1 - X.
(DEFUN CHANGE01 (lst)
((NULL lst) NIL)
(CONS (- 1 (CAR lst)) (CHANGE01 (CDR lst))) )
Задача 2. Змiнним a та b присвоєнi числа. Записати функцiю в одному рядку (не визначати цю функцiю), в результатi якої змiннi обмiнюються своїми значеннями. Використовувати допомiжнi змiннi забороняється.
$ (SETQ a 2 b 3) // a = 2, b = 3
$ (SETQ a (+ a b) b (- a b) a (- a b)) // a = 3, b = 2
Задача 3. Вiдомо, що lst - список, який мiстить неспадну послiдовнiсть чисел. Функцiя (NUM lst) повинна обчислювати кiлькiсть рiзних чисел у ньому.
(DEFUN NUM (lst)
((NULL (CDR lst)) 1)
((/= (CAR lst) (CADR lst)) (+ 1 (NUM (CDR lst))))
(NUM (CDR lst)) )
Задача 4. Списки lst1 та lst2 мiстять строго зростаючi послiдовностi чисел. Знайти кiлькiсть спiльних елементiв у цих масивах. Часова оцiнка алгоритму повинна дорiвнювати O(K+L), де K та L - довжини спискiв lst1 та lst2 вiдповiдно.
(DEFUN COMELEMENT (lst1 lst2)
((OR (NULL lst1) (NULL lst2)) 0)
((< (CAR lst1) (CAR lst2)) (COMELEMENT (CDR lst1) lst2))
((> (CAR lst1) (CAR lst2)) (COMELEMENT lst1 (CDR lst2)))
(+ 1 (COMELEMENT (CDR lst1) (CDR lst2))) )
В файлi irratnal.lsp мiститься великий набiр iррацiональних та трансцендентних функцiй. Аргументи тригонометричних функцiй задаються в радiанах.
1. (EXP x) експонента e^x
2. (EXPT x y) степiнь x^y
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021