Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 2nd, 2012  |  syntax: None  |  size: 0.69 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. type Trip = (String, Integer, Float)
  2. type Tour = [Trip]
  3.  
  4. shortenTour ::  Tour -> String -> String -> Trip    -> Tour
  5. shortenTour     tour    from      to        trip    =  _shortenTour tour from to trip False
  6.  
  7. _shortenTour :: Tour -> String -> String -> Trip -> Bool -> Tour
  8. _shortenTour [] _ _ _ _       = []
  9. _shortenTour ((t,x,y):tour) from to trip inside
  10.     |not inside && t==from   = [trip]      ++ _shortenTour tour from to trip (t==from)
  11.     |inside                  =                _shortenTour tour from to trip (t/=to)
  12.     |otherwise               = [(t,x,y)]   ++ _shortenTour tour from to trip True
  13.  
  14. --shortenTour [("a", 2, 1.1), ("b", 2, 2.3), ("g", 3, 4.4), ("f", 3, 11.0)] "a" "g" ("g", 3, 4.4)