Тема: разделить список на списки по ключу

имеется список:
("A" 1 2 3 4 5 "F" 6 7 8 9 "F" 11 12 13 14 15)
Ключ "A" один.
Ключей "F" может быть несколько или ни одного.
Цифры это координаты точек.
Необходимо получить список:
((1 2 3 4 5)(6 7 8 9 0)(11 12 13 14 15))
у меня не получается реализовать такую задачу, помогите пожалуйста

P.S.: упрощенно изложил задачу (разбираюсь с заданием списка координат для штриховки с множеством внутренних контуров. Там внешний контур имеет ключ "1", а внутренние - "16")

Re: разделить список на списки по ключу

Вроде сам разобрался, но может есть более простое решение:

(setq lst_point2 (list 1 2 3 4 5 "F" 6 7 8 9 0 "F" 11 12 13 14 15 "F" 16 17 18 "F" 19 20 21 22 23))
(setq i 0)
(setq k 0)
(setq s 0)
(setq nn (length lst_point2))
(setq n1 lst_point2)
(while (< i (1+ nn))
  (if (or (= (nth i n1) "F") (= i nn))
    (progn
      (setq lst_point3 lst_point2)
      (while (< k (- nn i))
    (setq lst_point3 (reverse (cdr (reverse lst_point3))))
    (setq k (1+ k))
      )
      (setq k 0)
      (setq lst_point4 (cdr lst_point2))
      (while (< k (length lst_point3))
    (setq lst_point4 (cdr lst_point4))
    (setq k (1+ k))
      )
      (setq k 0)
      (setq lst_point2 lst_point4)
      ;(princ lst_point3)
      (if (= s 0)
    (setq lst_point (list lst_point3))
    (setq lst_point (append lst_point (list lst_point3)))
      )
      (setq s 1)
    )
  )
  (setq i (1+ i))
)
(princ lst_point) ;--> ((1 2 3 4 5) (6 7 8 9 0) (11 12 13 14 15) (16 17 18) (19 20 21 22 23))