Hi all, I'm working on solving the problem http://adventofcode.com/2016/day/11 , and ran into some weird behaviour. I have solved the actual problem, so let's not focus on it.
Here's my code: (defn compute3 {:test (fn [] (is= (compute3 (create-state "F4 . . . . . " "F3 . . . LG . " "F2 . HG . . . " "F1 E . HM . LM ")) 11))} [state] (let [done-simple-state (state->simple-state (construct-finished-state state)) inner-fn (fn [states steps java-memory-map] (println "On step" steps) (println "Number of states" (count states)) (let [next-states (->> states (map (fn [state] (->> (get-next-states state) (filter (fn [s] (nil? (.get java-memory-map (state->simple-state s)))))))) (flatten))] ;; (println (count next-states)) <- Uncomment this line to change the behavior (if (.get java-memory-map done-simple-state) steps (do (doseq [next-state next-states] (.put java-memory-map (state->simple-state next-state) steps)) (recur next-states (inc steps) java-memory-map)))))] (inner-fn [state] 0 (java.util.HashMap.)))) When running this in the repl I get the following output: On step 0 Number of states 1 On step 1 Number of states 1 On step 2 Number of states 3 On step 3 Number of states 11 On step 4 Number of states 14 On step 5 Number of states 22 On step 6 Number of states 37 On step 7 Number of states 48 On step 8 Number of states 35 On step 9 Number of states 22 On step 10 Number of states 17 On step 11 Number of states 7 However, if I uncomment the println statement I get the following output in the REPL: On step 0 Number of states 1 1 On step 1 Number of states 1 3 On step 2 Number of states 3 11 On step 3 Number of states 11 15 On step 4 Number of states 15 28 On step 5 Number of states 28 63 On step 6 Number of states 63 107 On step 7 Number of states 107 90 On step 8 Number of states 90 82 On step 9 Number of states 82 115 On step 10 Number of states 115 81 On step 11 Number of states 81 110 Please note that "On step 4" prints "Number of states 14" and "Number of states 15" differently. Any thoughts? -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.