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


Автор: Mars30 13.5.2014, 17:34
Помогите реализовать такую задачку на CLisp:
Дан список из n чисел и натуральное число m<n. Для каждой группы из m элементов, которые находятся рядом, вычислить ее сумму. Написать функцию, которая выдает список из всех возможных сумм. Пример: (7142 3), m=3. S= (12 7 9).

Автор: _sg 15.5.2014, 21:35
Код

(defun sum-by-n-elms (w n)
  (cond ((null (nth (1- n) w)) nil)
  (t (cons (apply #'+ (subseq w 0 n))
           (sum-by-n-elms (cdr w) n)))))

> (sum-by-n-elms '(7 1 4 2 3) 3)
(12 7 9)

Код

(defun sum-by-n-elms (w n)
  (when (nth (1- n) w)
    (cons (apply #'+ (subseq w 0 n))
          (sum-by-n-elms (cdr w) n))))

> (sum-by-n-elms '(7 1 4 2 3) 3)
(12 7 9)


Добавлено через 8 минут и 56 секунд
Код

(defun sum-by-n-elms (w n)
  (loop for d on w
        when (nth (1- n) d)
        collect (apply #'+ (subseq d 0 n))))

> (sum-by-n-elms '(7 1 4 2 3) 3)
(12 7 9)

Автор: Mars30 17.5.2014, 19:43
_sg, спасибо smile  жалко не могу вам плюсик поставить

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