Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LISP > Ис списка (a a a a a a a a) список ((a a) (a a) (a a) (a a))


Автор: Eduard1 30.1.2009, 12:26
Никак не могу сообразить.  smile  
Создаю список  *(spisok 'a 8) получается такой список (a a a a a a a a), из него надо сделать ((a a) (a a) (a a) (a a))  

Код

(defun spisok (x n) 
    (cond  
       ((<= n 0) nil) 
       (t (cons x (spisok x (- n 1)))) 
    ) 
) 

 

Отдельно я сделал так: 

Код


(defun para (lst) 
    (cond 
       ((null lst) nil) 
       ((null (cdr lst)) nil) 
       (t (cons (list (car lst) (cadr lst)) (para (cddr lst)))) 
    ) 
)    



*(para lst '(a b c d)) 
((a b) (c d))  

Как сделать так чтобы при создании списка сразу создавались пары ((a a) (a a) (a a))?  

Автор: VH_ 30.1.2009, 19:01
Код

(defun F (e n)
 (cond
  ((<= n 0) nil)
  ((< n 2) (cons e nil))
  (T (cons (cons e (cons e nil)) (F e (- n 2))))))


Автор: _sg 24.4.2014, 23:56
как вариант:
Код

(defun pair-elms (w)
  (when (cdr w) (cons (list (car w) (cadr w)) (pair-elms (cddr w)))))

> (pair-elms '(a a a a a a a a))
((A A) (A A) (A A) (A A))

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