Lisp Tape Equilibrium
(defun tape-equilibrium (a)
  (let* ((vec (coerce a 'vector))
         (n (length vec))
         (first-part 0)
         (second-part (reduce #'+ vec))
         (min most-positive-fixnum))
    (loop for i from 0 below (1- n)
          do (progn
               (incf first-part i)
               (decf second-part i)
               (let ((difference (abs (- first-part second-part))))
                 (setf min (if (< difference min) difference min)))))
    min))

This keeps left and right running sums and updates the smallest difference at each split point.

Lisp Triangle
(defun triangle (a)
  (let* ((sorted (sort (copy-list a) #'<))
         (vec (coerce sorted 'vector))
         (c (length vec)))
    (if (< c 3)
        0
        (progn
          (loop for i from 0 below (- c 2)
                do (when (and (> (aref vec i) 0)
                              (> (aref vec i) (- (aref vec (+ i 2)) (aref vec (1+ i)))))
                     (return-from triangle 1)))
          0))))

This sorts the values and checks nearby triples, because a valid triangle only needs one local match after sorting.