// Airplane seating (function search [:Array letters min max rowOrColumn] (if (= min max) min (let [middle (Math.floor (/ (+ min max) 2))] (case [(letters.shift) rowOrColumn] (["F" "row"] (search letters min middle rowOrColumn)) (["B" "row"] (search letters (+ 1 middle) max rowOrColumn)) (["L" "column"] (search letters min middle rowOrColumn)) (["R" "column"] (search letters (+ 1 middle) max rowOrColumn)) (otherwise (throw "invalid search call")))))) (function seatId [:String boardingPass] (+ (* 8 (search (.split (boardingPass.substr 0 7) "") 0 127 "row")) (search (.split (boardingPass.substr 7) "") 0 7 "column")))