Skip to content

Instantly share code, notes, and snippets.

@qoobaa
Created April 2, 2009 19:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save qoobaa/89386 to your computer and use it in GitHub Desktop.
Save qoobaa/89386 to your computer and use it in GitHub Desktop.
def longest_road(visited_roads = [], skip_roads = [])
visited_roads << self
# left roads
unvisited_left_roads = left_roads - visited_roads - skip_roads
left_road_lenghts = unvisited_left_roads.map do |road|
lenghts, new_visited_roads = road.longest_road(visited_roads, unvisited_left_roads)
visited_roads = (visited_roads + new_visited_roads).uniq
lenghts
end
# right roads
unvisited_right_roads = right_roads - visited_roads - skip_roads
right_road_lenghts = unvisited_right_roads.map do |road|
lenghts, new_visited_roads = road.longest_road(visited_roads, unvisited_right_roads)
visited_roads = (visited_roads + new_visited_roads).uniq
lenghts
end
longest_road = 1 + (left_road_lenghts.max or 0) + (right_road_lenghts.max or 0)
return [longest_road, visited_roads]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment