Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > Lisp. Работа со списками


Автор: BorlandStudio 19.12.2015, 21:06
У кого-нибудь есть идеи относительно следующей задачи на языке обработки списков (LISP)?  smile  smile 
Реализовать стек в виде списка. Дана величина a строкового типа из четного количества символов (стек №1). Получить и напечатать величину b (стек №2), состоящую из символов первой половины величины a, записанных в обратном порядке, после которых идут символы второй половины величины a, также записанные в обратном порядке (используя промежуточный стек №3). Например, при а = "привет" b должно быть равно "ирптев". (используемый диалект (Common Lisp))   smile 

Автор: BorlandStudio 28.12.2015, 21:50
(defun wtf (a)
(let ((b (reverse (subseq a 0 (/ (length a) 2))))
(c (reverse (subseq a (/ (length a) 2) (length a)))))
(format t "~s" (concatenate 'string b c))))

* (wtf "привет")
"ирптев"
NIL

Что в коде не так? smile 

Автор: _sg 10.1.2016, 16:10
Код

(defun wtf (a &aux (m (/ (length a) 2)))
  (concatenate 'string
               (reverse (subseq a 0 m))
               (reverse (subseq a m))))

> (wtf "abcdef")
"cbafed"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)