Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сжатие английских слов, Сжатие английских слов 
:(
    Опции темы
Tomsk11
Дата 13.1.2013, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Приветствую всех!
Буду благодарен за помощь в решение данной задачи:

Построить программу «сжатия», назначение которой - преобразование английских слов в их "звуковой" код. Этот процесс предусматривает "сжатие" примерно одинаково звучащих слов в одинаковый их код - своего рода, аббревиатуру этих слов. Слова "сжимаются" в соответствии со следующими правилами:
первая буква слова сохраняется;
все последующие за ней гласные, а также буквы "h", "w" и "у" удаляются;
сдвоенные буквы заменяются одиночными;
закодированное слово состоит не более чем из четырех букв, остальные буквы удаляются.
Напишите функцию (f w), которая выдает результат сжатия слова, представленного в виде списка букв w. Примеры: (f '(b arringto n)) = (b r n g) и (f '(11 e we 11 у n)) =: (1 n). 
PM MAIL   Вверх
_sg
Дата 14.1.2013, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

(defun compress-word (w &optional ac &aux (a (car w)))
  (cond ((or (null w)(= (length ac) 4)) (reverse ac))
        ((or (member a '(a e i o u y h w)) (eq a (car ac)))
         (compress-word (cdr w) ac))
        ((compress-word (cdr w) (cons a ac)))))

> (compress-word '(b a r r i n g t o n))
(B R N G)
> (compress-word '(1 1 e w e 1 1 y n))
(1 N)

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
Tomsk11
Дата 8.3.2013, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Приветствую! Но в XLisp это не работает. :-(
PM MAIL   Вверх
_sg
Дата 10.3.2013, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

(defun compress-word (w)
  (compress w nil))

(defun compress (w ac)
  (cond ((or (null w)(= (length ac) 4)) (reverse ac))
        ((or (mmb (car w) '(a e i o u y h w)) (eql (car w) (car ac)))
         (compress (cdr w) ac))
        ((compress (cdr w) (cons (car w) ac)))))

(defun mmb (a w)
    (cond ((null w) nil)
    ((eql a (car w)) (cons (car w) (cdr w)))
    ((mmb a (cdr w)))))

> (compress-word '(b a r r i n g t o n))
(B R N G)
> (compress-word '(1 1 e w e 1 1 y n))
(1 N)

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
Tomsk11
Дата 13.3.2013, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Этот код тоже не работает. В любом случае- спасибо.
PM MAIL   Вверх
Tomsk11
Дата 14.3.2013, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Первый элемент, согласно задания, должен сохраняться независимо от того, какой он.

Добавлено через 2 минуты и 10 секунд
> (compress-word '(a r r i n g t o n))
(R N G T)

а должно быть (A R N G T)
PM MAIL   Вверх
_sg
Дата 16.3.2013, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ANSI Comon Lisp:
Код

(defun compress-word (w)
  (compress (cdr w) (list (car w))))

(defun compress (w ac &aux (a (car w)))
  (cond ((or (null w)(= (length ac) 4)) (reverse ac))
        ((or (member a '(a e i o u y h w)) (eq a (car ac)))
         (compress (cdr w) ac))
        ((compress (cdr w) (cons a ac)))))

> (compress-word '(a r r i n g t o n))
(A R N G)

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
_sg
Дата 25.4.2014, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

(defun compress-word (w)
  (compress (cdr w) `(,(car w))))

(defun compress (w ac &aux (a (car w)))
  (if (or (null w)(= (length ac) 4))
      (reverse ac)
      (compress (cdr w)
                (if (or (member a '(a e i o u y h w))
                        (eq a (car ac)))
                    ac
                    (cons a ac)))))

> (compress-word '(a r r i n g t o n))
(A R N G)

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

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

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


 




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


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

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