Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите написать программу вставки символов 
:(
    Опции темы
lilylena
Дата 27.2.2011, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите написать программу на LispWorks 

Дан текст. Нужно в каждом слове после заданного 3-х буквенного сочетания вставить заданное 2-х буквенное. 
 
Я могу вставить слово в предложение, но вставить символы  в слово... Помогите, пожалуйста.
PM MAIL   Вверх
k0rvin
Дата 28.2.2011, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

(defun insert-chars (input-stream output-stream pattern-seq insert-seq)
  (flet ((rd () (read-char input-stream nil nil)))
    (do ((n (length pattern-seq))
         (i 0)
         (c (rd) (rd)))
        ((null c)
         (when (= i n)
           (format output-stream "~a" insert-seq)))
      (cond ((= i n)
             (format output-stream "~a" insert-seq)
             (setf i 0))
            ((char= c (char pattern-seq i))
             (incf i))
            (t
             (setf i 0)))
      (write-char c output-stream))))

(defun test ()
  (let ((input   "fox. quick brown fo x jumps over lazy dog. foxx over dog. fox")
        (output  (make-array '(0) :element-type 'base-char
                             :fill-pointer 0 :adjustable t))
        (pattern "fox")
        (insert  "!!" ))
    (with-input-from-string (in input)
      (with-output-to-string (out output)
        (insert-chars in out pattern insert)))
    output))

Код

CL-USER> (test)
"fox!!. quick brown fo x jumps over lazy dog. fox!!x over dog. fox!!"


Это сообщение отредактировал(а) k0rvin - 28.2.2011, 21:38


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
lilylena
Дата 28.2.2011, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ОГРОМНОЕ спасибо!
PM MAIL   Вверх
_sg
Дата 25.4.2014, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

(defun insert-lets (s p r &aux (e (search p s)))
  (cond ((null e) (concatenate 'string nil s))
        ((concatenate 'string
                      (subseq s 0 e)
                      p
                      r
                      (insert-lets (subseq s (+ e 3)) p r)))))

> (insert-lets "abcde abcde abcde" "bcd" "zz")
"abcdzze abcdzze abcdzze"

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

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

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


 




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


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

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