Дано n отрезков на интервале (A,B). Определите часть интервала, который покрывается наибольшим количеством от - Lisp

Узнай цену своей работы

Формулировка задачи:

Пусть дано n отрезков на интервале (A,B). Определите часть интервала, который покрывается наибольшим количеством отрезков. Напишите функцию для определения количества отрезков, покрывающих заданный интервал.

Решение задачи: «Дано n отрезков на интервале (A,B). Определите часть интервала, который покрывается наибольшим количеством от»

textual
Листинг программы
  1. (defun max-span (w
  2.                  &aux
  3.                  (v (reduce #'append w))
  4.                  (n (reduce #'min v))
  5.                  (m (reduce #'max v))
  6.                  (x (loop for a in w collect (line n m a)))
  7.                  (z (apply #'mapcar #'list x))
  8.                  (p (pair z))
  9.                  (s (loop for a in p
  10.                           collect
  11.                           (mapcar #'list (car a) (cadr a))))
  12.                  (i (loop for a in s
  13.                           collect
  14.                           (loop for e in a
  15.                                 when (every #'numberp e)
  16.                                 collect e)))
  17.                  (r (reduce #'max (mapcar #'length i))))
  18.   (values (loop for a in i
  19.                 when (= (length a) r)
  20.                 collect (car a))
  21.           r))
  22.  
  23. (defun line (n m w)
  24.   (loop for a from n to m
  25.         if (<= (first w) a (second w)) collect a
  26.         else collect 'a))
  27.  
  28. (defun pair (w)
  29.   (when (cdr w) (cons (list (car w) (cadr w))
  30.                       (pair (cdr w)))))
  31.  
  32. > (max-span '((1 8) (1 9) (2 3) (2 4) (2 5) (6 7) (6 8) (6 9)))
  33. ((2 3) (6 7))
  34. 5

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


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

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

9   голосов , оценка 4.111 из 5

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

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

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