fork download
  1. (def GOAL 0)
  2. (def floor 1000)
  3. (def wall 2000)
  4. (def wide 60) ;; constant for map width, used for treating a 1D array as 2D.
  5.  
  6. (defn find-cells [^doubles a cell-kind]
  7. (persistent! (areduce ^doubles a i ret (transient {})
  8. (if (= (aget ^doubles a i) cell-kind) (assoc! ret i cell-kind) ret))))
  9.  
  10. (defn find-goals [^doubles a]
  11. (find-cells a GOAL))
  12.  
  13. (defn find-walls [^doubles a]
  14. (persistent! (areduce ^doubles a i ret (transient {})
  15. (if (>= (aget ^doubles a i) wall) (assoc! ret i wall) ret))))
  16.  
  17. (defn find-floors [^doubles a]
  18. (find-cells a floor))
  19.  
  20. (defn find-lowest [^doubles a]
  21. (let [low-val (apply min (vec a))]
  22. (find-cells a low-val)))
  23.  
  24. (defn find-monsters [m]
  25. (into {} (for [mp (map #(:pos @%) m)] [mp wall])))
  26.  
  27. (defn dijkstra
  28. ([a]
  29. (do (dijkstra a (find-walls a) (find-lowest a))))
  30. ([a closed open-cells]
  31. (let [open (atom open-cells)]
  32. (while (not (empty? @open))
  33. (let [newly-open (atom {})]
  34. (doall (for [[i v] @open]
  35. (let [n (- i wide)
  36. s (+ i wide)
  37. w (- i 1 )
  38. e (+ i 1 )
  39. ]
  40. (if (or (closed n) (@open n) (>= (inc v) (hiphip/aget a n))) nil (do (hiphip/aset a n (inc v)) (swap! newly-open assoc n (inc v))))
  41. (if (or (closed s) (@open s) (>= (inc v) (hiphip/aget a s))) nil (do (hiphip/aset a s (inc v)) (swap! newly-open assoc s (inc v))))
  42. (if (or (closed w) (@open w) (>= (inc v) (hiphip/aget a w))) nil (do (hiphip/aset a w (inc v)) (swap! newly-open assoc w (inc v))))
  43. (if (or (closed e) (@open e) (>= (inc v) (hiphip/aget a e))) nil (do (hiphip/aset a e (inc v)) (swap! newly-open assoc e (inc v))))
  44. )))
  45. (reset! open @newly-open)))
  46. a)))
  47.  
Runtime error #stdin #stdout #stderr 1.43s 389120KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Exception in thread "main" java.lang.RuntimeException: No such namespace: hiphip, compiling:(/home/N9oXbU/prog.clj:40:57)
	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$HostExpr$Parser.parse(Compiler.java:947)
	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.analyzeSeq(Compiler.java:6554)
	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.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2676)
	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$BodyExpr$Parser.parse(Compiler.java:5707)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyzeSeq(Compiler.java:6547)
	at clojure.lang.Compiler.analyze(Compiler.java:6360)
	at clojure.lang.Compiler.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2676)
	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$BodyExpr$Parser.parse(Compiler.java:5707)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyzeSeq(Compiler.java:6547)
	at clojure.lang.Compiler.analyze(Compiler.java:6360)
	at clojure.lang.Compiler.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2663)
	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$BodyExpr$Parser.parse(Compiler.java:5707)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.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.analyzeSeq(Compiler.java:6559)
	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$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2668)
	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$BodyExpr$Parser.parse(Compiler.java:5707)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6008)
	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$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.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$LetExpr$Parser.parse(Compiler.java:5937)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2663)
	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$BodyExpr$Parser.parse(Compiler.java:5707)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2668)
	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$BodyExpr$Parser.parse(Compiler.java:5707)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5707)
	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$IfExpr$Parser.parse(Compiler.java:2668)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5707)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyzeSeq(Compiler.java:6547)
	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$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.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.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$NewExpr$Parser.parse(Compiler.java:2498)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.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$LetExpr$Parser.parse(Compiler.java:5972)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyzeSeq(Compiler.java:6547)
	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$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5707)
	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$IfExpr$Parser.parse(Compiler.java:2668)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyze(Compiler.java:6321)
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5707)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.analyzeSeq(Compiler.java:6547)
	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$LetExpr$Parser.parse(Compiler.java:6008)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6559)
	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.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: No such namespace: hiphip
	at clojure.lang.Util.runtimeException(Util.java:219)
	at clojure.lang.Compiler.resolveIn(Compiler.java:6843)
	at clojure.lang.Compiler.resolve(Compiler.java:6817)
	at clojure.lang.Compiler.analyzeSymbol(Compiler.java:6778)
	at clojure.lang.Compiler.analyze(Compiler.java:6342)
	... 228 more