Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение функции, muLisp 
V
    Опции темы
Shadowlord
Дата 4.9.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 275
Регистрация: 28.11.2006

Репутация: нет
Всего: 5



Собственно задание звучит  вот так 
"Функция, имеющая один аргумент-список и возвращающая квадрат первого элемента этого списка, если этот элемент является числом, и 3-й элемент списка в противном случае."

Что то не могу сообразить как это будет выглядеть;

Да вот еще один маленький вопрос что бы не плодить темы, есть задание:
В данном упражнении требуется получить списки справа от стрелки с помощью суперпозиции функций LIST, APPEND, CONS, CAR, CDR. Аргументами функций могут быть лишь s-выражения, указанные слева от стрелки. 

Пример:    (A B); C; D =>(A B (C D))
Решение:    (APPEND '(A B) (LIST (LIST ‘C ‘D)))

(A); (B); (C D)    =>(A (B C) D)
Сделал его вот так 
(append '(a) (list(list(car '(b))(car '(c d))))(cdr '(c d)))
собственно вопрос в том можно ли обойтись без повторов(2 раза (с d)), и если да то как 
PM MAIL   Вверх
VH_
Дата 5.9.2009, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 31.10.2006

Репутация: 10
Всего: 11



Код
(defun F (L)
 (cond
  ((numberp (car L)) (* (car L) (car L)))
  ((null (cdr L)) 'idiotic)
  ((null (cddr L)) 'idiotic)
  (T (caddr L))))

Составители задания упустили из виду, что список <также> может состоять из одного или двух элементов.
Код
(append '(A) (cons (append '(B) (list (car '(C D)))) (cdr '(C D))))


PM MAIL   Вверх
_sg
Дата 25.4.2014, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 16.5.2007

Репутация: 2
Всего: 2



как вариант:
Код

(defun num-sq-3 (w &aux (a (car w)))
  (if (numberp a) (expt a 2) (caddr w)))

> (num-sq-3 '(3 2 1))
9
> (num-sq-3 '(a 2 1))
1

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.