> 1 <

Автор Сообщение

aleator

Members


Статус

6 сообщений

Где: Belarus Полоцк
Род занятий: Отец, студент-заочник, рабочий
Возраст: 44

#4409   2011-06-01 15:57 GMT+3 часа(ов)      
В Лиспе не силён (с Прологом разобрался).
Вот мои "кривые" версии:

1.Дано A и натуральное N. Вычислить выражение A*(A-N)*(A-2*N)* (A-N**2).

(defun fun2 (A N q)
(cond ((eq q -1) A)
;(t (* (- A (* N (expt 2 q)))
(fun2 (- A (* N (expt 2 (- q 1)))))
(t (* (- A (* N (expt 2 q)))))
)
)


2. Вычислить среднее арифметическое отрицательных чисел произвольного списка.
(Дошел только до суммы, да и ту вычислить не могу)

(defun fun3a (list)
(if (null list) nil
(let ((head (car list))(tail (cdr list)))
(cond ((listp head) (cons (fun3a head)(fun3a tail)))
(t (+ head (fun3a tail)))))
))
)
 
)

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#4410   2011-06-01 17:02 GMT+3 часа(ов)      
1)
(* A (- A N) (- A (* 2 N)) (- A (* N N)))

2)
(defun F (L &optional (Sum 0) (Num 0))
(if L
((lambda (elem)
(if (atom elem)
(if (numberp elem)
(if (minusp elem)
(F (cdr L) (+ Sum elem) (1+ Num))
(F (cdr L) Sum Num))
(F (cdr L) Sum Num))
(F (append elem (cdr L)) Sum Num)))
(car L))
(if (plusp Num) (/ Sum Num))))

aleator

Members


Статус

6 сообщений

Где: Belarus Полоцк
Род занятий: Отец, студент-заочник, рабочий
Возраст: 44

#4411   2011-06-01 17:48 GMT+3 часа(ов)      
Прошу ещё помощи с двумя примерами:

1.Дан список (a1, a2,…, aN). Вычислить значение выражения- max(a2,a4,…)+min(a1,a3,…).

(defun f (list)
(if (null list) nil
(cons (car list)(f (cddr list)))))
 
(defun e (list)
(if (null (cdr list)) nil
(cons (cadr list)(e (cddr list)))))
 
(defun fun1 (list)
(+ (max list (e list)) (min list (f list)))
)


2. Найти произведение всех ненулевых чисел из заданного сложного списка.

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#4414   2011-06-01 19:01 GMT+3 часа(ов)      
1.
(defun F (L &optional (acc '((max) (min))))
(if L
(F
(cdr L)
(apply
'(lambda (acc1 acc2)
(list (cons (car acc2) (cons (car L) (cdr acc2))) acc1))
acc))
(apply '+ (mapcar 'eval acc))))

aleator

Members


Статус

6 сообщений

Где: Belarus Полоцк
Род занятий: Отец, студент-заочник, рабочий
Возраст: 44

#4415   2011-06-01 19:09 GMT+3 часа(ов)      
Цитата
1)
(* A (- A N) (- A (* 2 N)) (- A (* N N)))

А как нибудь в виде функции нельзя?

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#4416   2011-06-01 19:12 GMT+3 часа(ов)      
2.
(defun F (L &optional (Prod 1) (Num 0))
(if L
((lambda (elem)
(if (atom elem)
(if (numberp elem)
(if (zerop elem)
(F (cdr L) Prod Num)
(F (cdr L) (* Prod elem) (1+ Num))
)
(F (cdr L) Prod Num))
(F (append elem (cdr L)) Prod Num)))
(car L))
(if (plusp Num) Prod)))

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#4417   2011-06-01 19:13 GMT+3 часа(ов)      
(defun F (A N)
(* A (- A N) (- A (* 2 N)) (- A (* N N))))

aleator

Members


Статус

6 сообщений

Где: Belarus Полоцк
Род занятий: Отец, студент-заочник, рабочий
Возраст: 44

#4418   2011-06-01 19:36 GMT+3 часа(ов)      
А как её вызывать:

(F '(5 4)) - пишет, что мало аргументов.

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#4419   2011-06-01 20:14 GMT+3 часа(ов)      
Кого "её"?

aleator

Members


Статус

6 сообщений

Где: Belarus Полоцк
Род занятий: Отец, студент-заочник, рабочий
Возраст: 44

#4421   2011-06-02 01:05 GMT+3 часа(ов)      
Я имею в виду вызов функции F в интерпретаторе с аргументами 5 и 4
(defun F (A N)
 
(* A (- A N) (- A (* 2 N)) (- A (* N N))))

VH

Members


Статус

289 сообщений

Где: ---
Род занятий:
Возраст:

#4422   2011-06-02 01:22 GMT+3 часа(ов)      
Функцию с двумя формальными параметрами и вызывайте с двумя аргументами:
(F 5 4)

joba

Members


Статус

157 сообщений

Где: ---
Род занятий:
Возраст:

#4427   2011-06-04 00:51 GMT+3 часа(ов)      
aleator, в каком университете лисп и пролог преподают в Беларуси? Очень нужно знать, я бы может даже поступил бы туда. В БГУ я точно знаю, что не преподают. Может Вы из БГУИР?

joba

Members


Статус

157 сообщений

Где: ---
Род занятий:
Возраст:

#4428   2011-06-04 00:55 GMT+3 часа(ов)      
P.S. Ответ можете мне в личку написать, если боитесь спалиться ;)
> 1 <


Онлайн :

0 пользователь(ей), 53 гость(ей) :