(defn compute_distance [left right] (if (not (= (length left) (length right))) (return @[])) (var output 0) (def sorted_left (sort left)) (def sorted_right (sort right)) (var i (- (length sorted_left) 1)) (while (>= i 0) (set output (+ output (math/abs (- (get sorted_left i) (get sorted_right i))))) (-- i)) output) (defn getnums [input] (def output (array/new 2)) (def str (string/split " " (string/trim input))) (var i 0) (each item str (if (not (= item "")) (do (set (output i) (scan-number item)) (++ i)))) output) (defn read_data [filename] (def left @[]) (def right @[]) (var index 0) (with [f (file/open filename)] (while true (var l (file/read f :line)) (if l (do (def line_data (getnums l)) (set (left index) (get line_data 0)) (set (right index) (get line_data 1)) (++ index)) (break)))) @[left right]) (defn main [script filename] (def input_arrays (read_data filename)) (def left (get input_arrays 0)) (def right (get input_arrays 1)) (def distance (compute_distance left right)) (pp distance))