Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Задан список произвольного уровня вложенности,превратить его в список атомов
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Дрон Дрон вне форума
Member
 
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.05.2007
По умолчанию Задан список произвольного уровня вложенности,превратить его в список атомов - 01.06.2007, 14:41

задан список произвольного уровня вложенности,превратить его в список атомов,который будет состоять только из букв или сумма их кодов превышает сумму цифр исходного.В противном случае список будет состоять только из цифр. В результирующем списке не должно быть повторов. на myLIsp
Ответить с цитированием
  (#2 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 525
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 01.06.2007, 20:10

common lisp
Код:
(defun cohere (w)
  (show (split (flat w))))

(defun flat (w &optional acc) 
  (cond ((null w) acc)
        ((atom w) (cons w acc))
        ((flat (car w) (flat (cdr w) acc)))))

(defun split (w &aux n m)
  (dolist (a w) (if (numberp a) (push a n) (push a m)))
  (list n m))

(defun show (w)
  ((lambda (n m)
     (if (< (reduce #'+ n)
            (reduce #'+ (mapcar #'char-code (mapcar #'(lambda (a) (char a 0)) m))))
         (remove-duplicates m :test #'string-equal)
         (remove-duplicates n)))
   (car w) (cadr w)))
(cohere '(1 ("a" ("b") 300) (1 "A")))
(300 1)
Ответить с цитированием
  (#3 (permalink)) Старый
Дрон Дрон вне форума
Member
 
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.05.2007
По умолчанию 02.06.2007, 18:32

спасибо огромное
Ответить с цитированием
  (#4 (permalink)) Старый
Дрон Дрон вне форума
Member
 
Сообщений: 33
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.05.2007
По умолчанию 05.06.2007, 11:43

а где скачать common lisp??
Ответить с цитированием
  (#5 (permalink)) Старый
Alexey Dejneka Alexey Dejneka вне форума
Member
 
Сообщений: 451
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.11.2004
По умолчанию 05.06.2007, 23:35

http://wiki.alu.org/Implementation
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 525
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 06.06.2007, 12:05

Windows:
Emacs/Slime CLISP
http://common-lisp.net/project/lispbox/

Linux:
Emacs/Slime SBCL
http://www.sbcl.org/
http://wiki.archlinux.org/index.php/Slime
Ответить с цитированием
  (#7 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 525
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 19.11.2014, 22:38

как вариант:
lisp Код:
(defun cohere (w)
  (show (split (flat w))))

(defun flat (w)
  (loop for a in w
        if (and a (atom a)) collect a
        else nconc (flat a)))

(defun split (w &aux n m)
  (dolist (a w) (if (numberp a) (push a n) (push a m)))
  (list n m))

(defun show (w)
  ((lambda (n m)
     (if (< (reduce #'+ n)
            (reduce #'+
                    (mapcar #'char-code
                            (mapcar #'(lambda (a) (char a 0)) m))))
         (remove-duplicates m :test #'string-equal)
         (remove-duplicates n)))
   (car w) (cadr w)))

> (cohere '(1 ("a" ("b") 300) (1 "A")))
(300 1)
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напишите функцию для lst1 и lst2, где lst1-список символьных атомов lulu Lisp 5 23.12.2011 21:01
Инвертировать список на всех уровнях вложенности eu6pc Haskell 29 06.07.2011 18:34
Предложение в список атомов. Demei Prolog 1 14.05.2011 17:24
Определите функцию,сортирующую список символьных атомов Prototip Lisp 0 16.12.2009 23:03
Вывести список вершин, находящихся ниже этого уровня Murzilka Lisp 2 19.06.2009 14:02
Построить список сумм чисел для вершин каждого уровня V55 Lisp 0 20.05.2009 22:53
Можно ли превратить вложенный список в линейный Aidar*ka Lisp 5 28.04.2009 15:52
Задан список произвольного уровня вложенности Kolobov_Anton Lisp 2 22.04.2009 02:23
Задан список произвольного уровня вложенности, сформировать из него новый список Kolobov_Anton Lisp 3 26.03.2009 22:29
По списку, состоящему из атомов-чисел, составить список значений super_girl Lisp 8 12.04.2007 15:16
Как описать список произвольной степени вложенности annoyed Prolog 3 28.10.2004 15:07
Обход масива незная уровня вложенности Anonymous PHP 1 09.06.2003 11:19



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов