С Новым годом! Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Lisp Рекурсивные преобразования списков. Common Lisp Используя приёмы рекурсии, выполнить такое преобразование. Исходный многоуровневый любой список, вида (a b (( c d e ) f g ( h i )) j k ) Образовать результирующий список вида ((a b) ( c d ) ( e f ) ( g h ) ( i g )) //перегруппировать элементы в подсписке по два до последнего парного. https://www.cyberforum.ru/ lisp/ thread1047900.html Lisp Расчет простейшего выражения. Common Lisp
Под именем w ввести список (4 5 6 7 8 9). Далее ввести выражение которое составляло бы программу суммирования элементов этого списка но без 1-го и последнего элемента. И сразу же это выражение должно выполнятся.
Lisp задание под именем x,y,z ввести списки (17 25),(9 44),(3 7) Потом ввести S выражение которое помогает сделать попарное составление списков для проверки ( оповещение t или nil) того что не является один с составленных списков таким, что каждый его элемент больше любого другого из составленных списков, составить введенные списки https://www.cyberforum.ru/ lisp/ thread1047724.html Lisp Перевернуть слово https://www.cyberforum.ru/ lisp/ thread1047717.html
Помогите сделать код программы((( Дана строка со словами, разделёнными пробелами. Определить функцию, которая возвращает копию этой строки со словами, идущими в обратном порядке. Добавлено через 26 секунд Дано S-выражение, представляющее дерево вида «(Родитель РебенокЛевый РебенокПравый)». Определить функцию, выполняющую для каждой вершины следующее: поменять местами значения детей.
одна задача Lisp
тексты заданий перепечатывайте на форум. читайте правила
Lisp Определить функцию, возвращающую сумму 1-го, 3-го, 5-го и т.д. элементов Форумчата)))большая прибольшая просьба помогите написать коды на программки по лисп)))зашиваюсь((( 1. Дан список чисел. Определить функцию, возвращающую сумму 1-го, 3-го, 5-го и т.д. элементов. Использовать только базис Лиспа одна тема - одна задача - читайте правила форума если кто знает коды, помогите))) https://www.cyberforum.ru/ lisp/ thread1047676.html
Lisp задание5 https://www.cyberforum.ru/ lisp/ thread1047461.html
Используя рекурсию в Common Lisp сделать следующие преобразования: Получая в качестве исходных данных 3 списка вида: 1. (a b c d (e f) (g h) i j) 2. (X Y Z V W T S Q) 3. (1 0 0 1 1 0 1 1) создать список вида: (a Y Z d (e f) T i j), то есть, заменить елементы первого списка елементами второго списка, в тех позициях, в которых в третем списке стоят нули.
Lisp Списки
Под именем х задан список (7 1 2 13 24). Используя его, составить список, который включает в себя уменьшенные в три раза елементы исходного списка, что имеют не парные порядковые номера.
Lisp Ветвлений и циклы разных типов Помогите пожалуйста решить.с помощью ветвлений и циклов разных типов. 1. Для заданного предложения определить минимальное, содержащееся в тексте число. 2. Дан текст, состоящий из латинских букв. Найти те буквы, которые входят в текст не менее 2-х раз. https://www.cyberforum.ru/ lisp/ thread1047268.html Lisp минимальный разрез с ограничениями https://www.cyberforum.ru/ lisp/ thread1047259.html
подскажите как написать решение такой программы на лиспе
Нужна функция, преобразующая списки Lisp
Определить функцию cartesian-product, которая преобразует списки следующим образом: > (cartesian-product ‘(a b) ‘(c d)) ((a c) (a d) (b c) (b d)) спасибо. :)
Lisp Графика Здравствуйте, не получается сделать следующее задание: Написать функцию, запрашивающую пользователя начальную точку и рисующую от неё конверт, не проходя одну линию дважды и возвращающуюся в исходную точку. https://www.cyberforum.ru/ lisp/ thread1046634.html
Модератор
Эксперт функциональных языков программированияЭксперт Python
37412 / 20784 / 4277
Регистрация: 12.02.2012
Сообщений: 34,194
Записей в блоге: 14
20.12.2013, 20:51 0

построить выражение в префиксной записи - Lisp - Ответ 5530391

20.12.2013, 20:51. Показов 3199. Ответов 7
Метки (Все метки)

Ответ

Цитата Сообщение от Лелик Посмотреть сообщение
вот еще 5 ошибок вывело
- не пять, а одна.

Добавлено через 12 минут
Вот код, проверенный в LispWorks:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
(defun atomlist (x)
  (cond ((null x) nil)
        ((atom (car x)) (atomlist (cdr x)))
        (t nil)))        
 
(DEFUN inf2pref (x) 
    (PROG (hd tl cc xx rr) 
      (COND ((atomlist x) (RETURN (inf-aux x NIL NIL))))
      (SETQ rr NIL)
      (SETQ xx x) 
 LOOP (SETQ hd (CAR xx))
      (SETQ tl (CDR xx))
      (COND ((member hd '(SIN COS LOG EXP ATN ASN ACS SH CH SQR SIGN ABS))
              (PROGN 
                   (SETQ rr (APPEND rr (LIST (LIST hd (inf2pref (CAR tl))))))
                   (SETQ tl (CDR tl)))) 
            ((ATOM hd) (SETQ rr (APPEND rr (LIST hd)))) 
            (T (SETQ rr (APPEND rr (LIST (inf2pref hd))))))
      (COND ((NULL tl) (RETURN (inf-aux rr NIL NIL))))
      (SETQ xx tl) (GO LOOP)))
      
      
(DEFUN inf-aux (ae operators operands)
   (inf-iter (CDR ae) operators (CONS (CAR ae) operands)))
      
(DEFUN inf-iter (ae operators operands)
   (PROG NIL 
      (COND ((AND (NULL ae) (NULL operators)) (RETURN (CAR operands))))
      (COND ((AND (NOT (NULL ae)) (OR (NULL operators) (> (weight (CAR ae)) (weight (CAR operators)))))
            (RETURN (inf-aux (CDR ae) (CONS (CAR ae) operators) operands))))
      (RETURN (inf-iter ae (CDR operators) (CONS (LIST (opcode (CAR operators)) (CADR operands) (CAR operands)) (CDDR operands))))))
      
(DEFUN weight (x) 
   (COND ((EQ x (QUOTE +)) 1) 
         ((EQ x (QUOTE -)) 1) 
         ((EQ x (QUOTE *)) 2) 
         ((EQ x (QUOTE /)) 2) 
         ((EQ x (QUOTE ^)) 3) 
         (T 5)))
         
(defun opcode (op) 
 (COND ((EQ op (QUOTE +)) (QUOTE +))
       ((EQ op (QUOTE -)) (QUOTE -)) 
       ((EQ op (QUOTE *)) (QUOTE *))
       ((EQ op (QUOTE /)) (QUOTE /))
       ((EQ op (QUOTE ^)) (QUOTE ^)) 
       (T (error 'bad_opcode))))
Добавлено через 1 час 9 минут
Хотя функция opcode довольно "глупая". Происхождение ее таково: в очень старых версиях Лиспа арифметические операции задавались функциями plus, difference, times и т.д. Поэтому функция замены "+" -> Plus была необходима.

Вернуться к обсуждению:
построить выражение в префиксной записи Lisp
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2013, 20:51
Готовые ответы и решения:

Вычисление выражение, записанного в префиксной форме
Помогите написать программу,которая вычисляет выражение,что содержит только символы операций и...

Вычислить выражение записаное в префиксной форме
Помогите написать программу,которая вычисляет выражение,что содержит только символы операций и...

Преобразовать выражение в префиксной форме в постфиксную (C -> C++)
Помогите пожалуйста перевести программу на язык СИ. #include <cctype> #include <iostream>...

Перевод префиксной формы записи в постфиксную
Помогите пожалуйста написать алгоритм перевода из префиксной формы записи в постфиксную(минуя...

7
20.12.2013, 20:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2013, 20:51
Помогаю со студенческими работами здесь

Преобразование формы записи выражения из префиксной в постфиксную
Требуеться написать программу на языке Prolog "Преобразование формы записи выражения из префиксной...

Преобразование префиксной записи арифметического выражения в инфиксную
Доброй ночи! Пожалуйста, помогите решить мне вот такую задачку Напишите программу, которая...

Разница между префиксной и постфиксной формой записи счетчика цикла
Здравствуйте! Когда оформлял циклы всегда использовал такую запись: for(int i=0; i<10;...

Как построить выражение
Помогите надо построить выражение в ms access. Условие если срок хранения >10 месяцев то цена...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru