Skip to content

Instantly share code, notes, and snippets.

@Reefersleep
Created May 27, 2015 18:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Reefersleep/d0ed08a3f2915db25138 to your computer and use it in GitHub Desktop.
Save Reefersleep/d0ed08a3f2915db25138 to your computer and use it in GitHub Desktop.
broke indentation a different way
(ns derpa.core
(:gen-class))
(defn initialize-cells [number] (vec (repeat number 0)))
(defn interpret [src]
(loop [src src
reader-position 0
cells (initialize-cells 200)
cell-pointer 50
movement :moving-forward
nested-left-brackets 0
nested-right-brackets 0]
(if (= reader-position (count src)) cells ;; Terminal case - stop reading
(let [current-symbol (nth src reader-position)] ;; Read the current symbol
(cond
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-forward movement) (if (= \] current-symbol))
(= :looping-backward movement) (if (= \[ current-symbol))
(= \+ current-symbol) (recur src)
(= \- current-symbol) (recur src)
(= \> current-symbol) (recur src)
(= \< current-symbol) (recur src)
(= \. current-symbol) (do (print (char (nth cells cell-pointer))))
(= \[ current-symbol) (if (= 0 (nth cells cell-pointer)))
(= \] current-symbol) (if (not (= 0 (nth cells cell-pointer)) ))
(= \, current-symbol) (recur src)
:else (recur src
(inc reader-position)
cells
cell-pointer
:moving-forward
nested-left-brackets
nested-right-brackets)))))) ;; Moves reader-position forward if the current character is unknown
(defn -main
"Time to interpret some Brainfuck"
[& args]
(do (interpret (first args))
(println)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment