Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Обработка строк, работа со списками
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
aunk aunk вне форума
Member
 
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.10.2008
По умолчанию 07.12.2008, 17:07

Помогите, пожалуйста решить задачу:

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

Заранее благодарю ))))
Ответить с цитированием
  (#2 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 08.12.2008, 18:36

Код:
(defun vp (s)
  (find s '(a e i o u)))

(defun vs (w &optional acc (n 0) &aux (a (car w)) (d (cdr w)))
  (cond ((null w) (list (reverse acc) n))
        ((vp a) (vs d (push a acc) n))
        ((vs d acc (1+ n)))))
 
(defun ft (w &optional acc) 
  (cond ((null w) acc)
        ((atom w) (cons w acc))
        ((ft (car w) (ft (cdr w) acc)))))

(defun vx (w)
  (vs (ft w)))
(vx '((a c e) u))
((A E U) 1)
Ответить с цитированием
  (#3 (permalink)) Старый
aunk aunk вне форума
Member
 
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.10.2008
По умолчанию 04.01.2009, 21:17

спасибо за помощь, но пожалуйста прокомментируйте что делает каждая функция? Преподу надо объяснить, я в лиспе не разбираюсь...
заранее благодарю
Ответить с цитированием
  (#4 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 05.01.2009, 11:06

vp - проверяет, является ли символ гласной (vp - vowel p)

vs - возвращает список гласных символов и число удаленных символов (vs - vowel symbol)

ft - выравнивает список в одноуровневый, плоский (ft - flat)

vx - главная, вызывает ft и vs (vx- vowel extract)
Ответить с цитированием
  (#5 (permalink)) Старый
aunk aunk вне форума
Member
 
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.10.2008
По умолчанию 05.01.2009, 16:50

огромное спасибо
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
aunk aunk вне форума
Member
 
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 23.10.2008
По умолчанию 06.01.2009, 21:57

что означают эти слова?

&optional acc
&aux
push
acc
Ответить с цитированием
  (#7 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 07.01.2009, 20:52

Common Lisp:

&optional - в списке параметров предваряет необязательный (опциональный) параметр

&aux - в списке параметров предваряет дополнительные (вспомогательные) переменные

push - функция, заталкивает значение переменной а в асс - (push a acc)

acc - переменная - список, накапливает результат (аккумулятор)
Ответить с цитированием
  (#8 (permalink)) Старый
_sg _sg вне форума
Member
 
Аватар для _sg
 
Сообщений: 522
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 38 сообщениях
Регистрация: 23.01.2007
По умолчанию 19.11.2014, 11:09

как вариант;
lisp Код:
(defun vp (s)
  (find s '(a e i o u)))

(defun vs (w &optional acc (n 0) &aux (a (car w)) (d (cdr w)))
  (cond ((null w) (list (reverse acc) n))
        ((vp a) (vs d (push a acc) n))
        ((vs d acc (1+ n)))))

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

(defun vowels-del (w)
  (vs (ft w)))

> (vowels-del '((a c e) u))
((A E U) 1)
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка строк символов Naru Pascal 1 14.11.2011 18:10
работа со списками 3ai4i6ka Prolog 0 20.10.2011 22:12
Обработка строк в Visual Prolog 5.2 L_tus Prolog 5 02.06.2011 01:04
Что такое обработка строк nona C++ Builder 6 04.05.2011 02:30
Обработка строк вывод всех слов Наташок Visual Basic 1 27.12.2010 17:01
работа со списками FEAR Prolog 8 09.11.2009 01:08
Работа со списками MastaK Prolog 0 06.02.2009 13:34
Работа со списками NRGize Prolog 2 25.05.2007 00:43
Обработка строк на VB6 Vain Static Visual Basic 1 04.12.2006 03:26
опять проблема со списками строк Jethro Prolog 5 14.12.2004 16:37
Списки и обработка строк imported_Sub Lisp 2 11.06.2004 11:19



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