DEV Community

Discussion on: Daily Challenge #265 - Equal Sides

Collapse
 
heykieran profile image
heykieran

Clojure

(defn equal-sides
  [candidate-array]
  (loop
   [c candidate-array idx 1 lt 0 rt 0]
    (cond
      (empty? c) -1
      (and (= lt rt) (= 1 (count c))) idx
      :else
      (let
       [inc-l (> (+ rt (last c)) (+ lt (first c)))]
        (recur
         (if inc-l (rest c) (butlast c))
         (if inc-l (inc idx) idx)
         (+ lt (if inc-l (first c) 0))
         (+ rt (if-not inc-l (last c) 0)))))))