Sha256: 5889e9c981c7bcf0e704772e056e5e918da9ffda4bd69e57a247494624c82bdf
Contents?: true
Size: 1.39 KB
Versions: 1
Compression:
Stored size: 1.39 KB
Contents
context :CalculateShortestDistance do role :tentative_distance_values do end role :path do end role :current do end role :destination do end role :map do def distance_between(a, b) map.distances[Edge.new(a, b)] end # These two functions presume always travelling # in a southern or easterly direction def next_down_the_street_from(x) map.east_neighbor_of x end def next_along_the_avenue_from(x) map.south_neighbor_of x end end role :current do def tentative_distance tentative_distance_values[current] end def set_tentative_distance_to(x) tentative_distance_values[current] = x end end def rebind(origin_node, geometries) @current = origin_node @destination = geometries.destination @map = geometries end def distance current.set_tentative_distance_to(0) @path = CalculateShortestPath.new(current, destination, map,nil,nil,nil,nil).path retval = 0 previous_node = nil path.reverse_each { |node| if previous_node.nil? retval = 0 else retval += map.distance_between previous_node, node end previous_node = node } retval end def initialize(origin_node, geometries) rebind(origin_node, geometries) @tentative_distance_values = Hash.new end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
maroon-0.8.0 | Test/Examples/CalculateShortestDistance.rb |