Дано n отрезков на интервале (A,B). Определите часть интервала, который покрывается наибольшим количеством от - Lisp
Формулировка задачи:
Пусть дано n отрезков на интервале (A,B). Определите часть интервала, который покрывается наибольшим количеством отрезков. Напишите функцию для определения количества отрезков, покрывающих заданный интервал.
Решение задачи: «Дано n отрезков на интервале (A,B). Определите часть интервала, который покрывается наибольшим количеством от»
textual
Листинг программы
(defun max-span (w &aux (v (reduce #'append w)) (n (reduce #'min v)) (m (reduce #'max v)) (x (loop for a in w collect (line n m a))) (z (apply #'mapcar #'list x)) (p (pair z)) (s (loop for a in p collect (mapcar #'list (car a) (cadr a)))) (i (loop for a in s collect (loop for e in a when (every #'numberp e) collect e))) (r (reduce #'max (mapcar #'length i)))) (values (loop for a in i when (= (length a) r) collect (car a)) r)) (defun line (n m w) (loop for a from n to m if (<= (first w) a (second w)) collect a else collect 'a)) (defun pair (w) (when (cdr w) (cons (list (car w) (cadr w)) (pair (cdr w))))) > (max-span '((1 8) (1 9) (2 3) (2 4) (2 5) (6 7) (6 8) (6 9))) ((2 3) (6 7)) 5
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д