Найти представление первого числа списка суммой последовательных элементов этого списка - 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
Листинг программы
  1. (defun chk-pos (m lst)
  2.   (let ((r nil) (s 0))
  3.    (dolist (a lst nil)
  4.     (setq s (+ s a))
  5.     (push a r)
  6.     (cond ((> s m) (return nil))
  7.           ((= s m) (return (reverse r)))))))
  8.      
  9. ==> CHK-POS
  10.  
  11. (defun task (lst)
  12.   (remove nil (maplist (lambda (x) (chk-pos (car lst) x)) (cdr lst))))
  13.  
  14. ==> TASK
  15.  
  16. (task '(15 1 2 3 4 5 5 5 10 5))
  17.  
  18. ==> ((1 2 3 4 5) (5 5 5) (5 10) (10 5))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы