   (for [i (range grid_size)] (get_line grid direction (movement * i)))
   )
 
+; Grab the line to process
 (defn get_line
   [grid_lines direction line_no]
   (if (= direction "RIGHT")
     (ret_line (nth grid_lines line_no)))
   (if (= direction "LEFT")
+    ; Gah this is ugly and if I didn't suck at clojure I'd know a better way
     (reverse (ret_line (reverse (nth grid_lines line_no)))))
   (if (= direction "DOWN")
     (ret_line (get_column grid_lines line_no)))

  (for [i (range (count non_zero_vals))] (combine_indexes non_zero_vals i (+ i 1)))
  )

(defn index-exclude
  [r ex]
  (filter #(not (ex %)) (range r)))

(defn dissoc-idx
  [v & ds]
  (map v (index-exclude (count v) (into #{} ds))))

(defn combine_indexes
  [line current_index next_index]


  ; Read each line ignoring empty ones
  (doseq [line (remove empty? (line-seq rdr))]
    (parseLine line)))
; First in the function cascade
; Parses a line of the game board
(defn parseLine
  [line]
  (let direction (get_direction line))
  (let grid_size (get_grid_size line))
  (println (do_move direction grid_size line 0)))

; Get the direction of the game move
(defn get_direction
  [line]
  (nth (split line #";") 1)
  )

; Get the size of the grid
(defn get_grid_size
  [line]
  (nth (split line #";") 2))


; Starts the move
(defn do_move
  [direction grid_size line movement]
  (let grid_lines (nth (split line #";") 3))
