;; problem code (defn local-dijkstra ([a center radius] (local-dijkstra a (find-walls a) {center 0} center radius)) ([a ent center radius] (local-dijkstra a (dissoc (merge (find-walls a) (find-monsters @monsters)) (:pos @ent)) {center 0} center radius)) ([a closed open-cells center radius] (loop [open open-cells result (transient {}) ctr 0] (if (and (seq open) (< ctr radius)) (recur (reduce (fn [newly-open [i v]] (reduce (fn [acc dir] (if (or (closed dir) (open dir) ;(> 0 (get result dir 22222.0)) ) acc (do (assoc! result dir (inc v)) (println (count result) " " ctr " " (str open) " " (str newly-open)) (assoc acc dir (inc v))))) newly-open, [(- i wide) (+ i wide) (- i 1) (+ i 1)])) {}, open) result (inc ctr)) (persistent! result))) )) ;;utility functions (defn find-cells [^doubles a cell-kind] (persistent! (areduce ^doubles a i ret (transient {}) (if (= (aget ^doubles a i) cell-kind) (assoc! ret i cell-kind) ret)))) (defn find-goals [^doubles a] (find-cells a GOAL)) (defn find-walls [^doubles a] (persistent! (areduce ^doubles a i ret (transient {}) (if (>= (aget ^doubles a i) wall) (assoc! ret i wall) ret)))) (defn find-floors [^doubles a] (defn find-lowest [^doubles a] (let [low-val (hiphip/amin a)] (find-cells a low-val))) (defn find-monsters [m] (into {} (for [mp (map #(:pos @%) m)] [mp wall]))) ;; working code by amalloy (defn dijkstra ([a] (dijkstra a (find-walls a) (find-lowest a))) ([a ent] (dijkstra a (dissoc (merge (find-walls a) (find-monsters @monsters)) (:pos @ent)) (find-lowest a))) ([a closed open-cells] (loop [open open-cells] (when (seq open) (recur (reduce (fn [newly-open [i v]] (reduce (fn [acc dir] (if (or (closed dir) (open dir) (>= (inc v) (hiphip/aget a dir))) acc (do (hiphip/aset a dir (inc v)) (assoc acc dir (inc v))))) newly-open, [(- i wide) (+ i wide) (- i 1) (+ i 1)])) {}, open)))) a))
Standard input is empty
Standard output is empty
Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: find-walls in this context, compiling:(/home/WMrVT4/prog.clj:5:24) at clojure.lang.Compiler.analyze(Compiler.java:6379) at clojure.lang.Compiler.analyze(Compiler.java:6321) at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3572) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6561) at clojure.lang.Compiler.analyze(Compiler.java:6360) at clojure.lang.Compiler.analyze(Compiler.java:6321) at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3623) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6561) at clojure.lang.Compiler.analyze(Compiler.java:6360) at clojure.lang.Compiler.analyze(Compiler.java:6321) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5707) at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5138) at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3750) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6557) at clojure.lang.Compiler.analyze(Compiler.java:6360) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6547) at clojure.lang.Compiler.analyze(Compiler.java:6360) at clojure.lang.Compiler.access$100(Compiler.java:37) at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:528) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559) at clojure.lang.Compiler.analyze(Compiler.java:6360) at clojure.lang.Compiler.analyze(Compiler.java:6321) at clojure.lang.Compiler.eval(Compiler.java:6622) at clojure.lang.Compiler.load(Compiler.java:7062) at clojure.lang.Compiler.loadFile(Compiler.java:7019) at clojure.main$load_script.invoke(main.clj:286) at clojure.main$script_opt.invoke(main.clj:348) at clojure.main$main$fn__6676.invoke(main.clj:432) at clojure.main$main.doInvoke(main.clj:429) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.lang.Var.invoke(Var.java:415) at clojure.lang.AFn.applyToHelper(AFn.java:161) at clojure.lang.Var.applyTo(Var.java:532) at clojure.main.main(main.java:37) Caused by: java.lang.RuntimeException: Unable to resolve symbol: find-walls in this context at clojure.lang.Util.runtimeException(Util.java:219) at clojure.lang.Compiler.resolveIn(Compiler.java:6873) at clojure.lang.Compiler.resolve(Compiler.java:6817) at clojure.lang.Compiler.analyzeSymbol(Compiler.java:6778) at clojure.lang.Compiler.analyze(Compiler.java:6342) ... 33 more