]> gitweb.factorcode.org Git - factor.git/commitdiff
Use sets
authorSamuel Tardieu <sam@rfc1149.net>
Wed, 17 Mar 2010 09:50:45 +0000 (10:50 +0100)
committerSamuel Tardieu <sam@rfc1149.net>
Tue, 23 Mar 2010 08:12:10 +0000 (09:12 +0100)
extra/astar/astar.factor

index 45f8aaa86e9af2496f76256759a131de40589103..85b3108217f4c2e2c683ba0dd07b675b57381498 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2010 Samuel Tardieu.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs heaps kernel math sequences sets shuffle ;
+USING: accessors assocs hash-sets heaps kernel math sequences sets shuffle ;
 IN: astar
 
 ! This implements the A* algorithm. See http://en.wikipedia.org/wiki/A*
@@ -24,10 +24,10 @@ TUPLE: (astar) astar goal origin in-open-set open-set ;
     (add-to-open-set) ;
 
 : ?add-to-open-set ( node astar -- )
-    2dup astar>> in-closed-set>> key? [ 2drop ] [ add-to-open-set ] if ;
+    2dup astar>> in-closed-set>> in? [ 2drop ] [ add-to-open-set ] if ;
 
 : move-to-closed-set ( node astar -- )
-    [ astar>> in-closed-set>> conjoin ] [ in-open-set>> delete-at ] 2bi ;
+    [ astar>> in-closed-set>> adjoin ] [ in-open-set>> delete-at ] 2bi ;
 
 : get-first ( astar -- node )
     [ open-set>> heap-pop drop dup ] [ move-to-closed-set ] bi ;
@@ -58,7 +58,7 @@ TUPLE: (astar) astar goal origin in-open-set open-set ;
 : (init) ( from to astar -- )
     swap >>goal
     H{ } clone over astar>> (>>g)
-    H{ } clone over astar>> (>>in-closed-set)
+    { } <hash-set> over astar>> (>>in-closed-set)
     H{ } clone >>origin
     H{ } clone >>in-open-set
     <min-heap> >>open-set
@@ -78,4 +78,4 @@ PRIVATE>
     astar-simple new swap >>heuristic swap >>cost swap >>neighbours ;
 
 : considered ( astar -- considered )
-    in-closed-set>> keys ;
+    in-closed-set>> members ;