ain't good, fast, or pretty... but they were fun
four was the funnest
(defun one ()
(setq list1 '(nil nil T T T nil T))
(setq list2 '(1 3 7 11 5 6 4))
(mapcar '(lambda (item) (cdr item))
(vl-remove-if
'(lambda (item
)
(car item)
)
(mapcar '(lambda (i1 i2) (cons i1 i2)) list1 list2)
)
)
)
(defun two ()
(setq list1 '(nil nil T T T nil T))
(setq list2 '(1 3 7 11 5 6 4))
(setq list4 nil)
(setq list3 (mapcar '(lambda (i1 i2) (cons i1 i2)) list1 list2))
(while (assoc nil list3)
(setq list4 (cons (setq item (cdr (assoc nil list3))) list4))
(setq list3 (subst (cons t item) (assoc nil list3) list3))
)
(reverse list4)
)
(defun three ()
(setq list1 '(nil nil T T T nil T))
(setq list2 '(1 3 7 11 5 6 4))
(setq list3 nil)
(setq len (length list1))
(while (member nil list1)
(setq list3
(cons (nth (- (1- len)
(length (setq list1 (cdr (member nil list1))))
)
list2
)
list3
)
)
)
(reverse list3)
)
(defun four ()
(setq list1 '(nil nil T T T nil T))
(setq list2 '(1 3 7 11 5 6 4))
(setq list3 (mapcar '(lambda (item1 item2) (cons item1 item2)) list1 list2))
(mapcar 'cdr
(vl-sort (vl-member-if-not
'(lambda (item) (car item))
(vl-sort list3 '(lambda (item1 item2) (car item1)))
)
'(lambda (item1 item2)
(< (vl-position (cdr item1) list2)
(vl-position (cdr item2) list2)
)
)
)
)
)