Найти представление первого числа списка суммой последовательных элементов этого списка - Lisp
Формулировка задачи:
Дается последовательность целых чисел L= (M, A1, A2,…, AN). Найти подстроки
подсписки
(если они есть) L1= (Ai, Ai+1,…,Ai+k ), i+ k <= N , i>=1 для которых M=Ai + Ai+1 + …+ Ai+k . Помогите решить на LispРешение задачи: «Найти представление первого числа списка суммой последовательных элементов этого списка»
textual
Листинг программы
(defun chk-pos (m lst) (let ((r nil) (s 0)) (dolist (a lst nil) (setq s (+ s a)) (push a r) (cond ((> s m) (return nil)) ((= s m) (return (reverse r))))))) ==> CHK-POS (defun task (lst) (remove nil (maplist (lambda (x) (chk-pos (car lst) x)) (cdr lst)))) ==> TASK (task '(15 1 2 3 4 5 5 5 10 5)) ==> ((1 2 3 4 5) (5 5 5) (5 10) (10 5))
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д