| (!*******************************************************
  * Mosel Example Problems                              *
  * ======================                              *
  *                                                     *
  * file minmax.mos                                     *
  * ```````````````                                     *
  * Example for the use of the Mosel language           *
  * (Min and max of a set of numbers)                   *
  *                                                     *
  * (c) 2008 Fair Isaac Corporation                     *
  *     author: S. Heipcke, 2001                        *
  *******************************************************!)
model Minmax                   ! Start a new model
declarations
 SNumbers: set of integer      ! Set of integer numbers
 LB=-1000                      ! Elements of SNumbers must be between LB
 UB=1000                       ! and UB
end-declarations
 forall(i in 1..50)
  SNumbers += {round(random*200)-100}
 writeln("Set: ", SNumbers, " (size: ", SNumbers.size, ")")
 minval:=UB
 maxval:=LB
 forall(p in SNumbers)
   if pmaxval then
     maxval:=p
   end-if    
 writeln("Min: ", minval, ", Max: ", maxval)
(! Instead of writing the loop above, it is of course possible to use
   the corresponding operators provided by Mosel:
  
 writeln("Min: ", min(p in SNumbers) p, ", Max: ", max(p in SNumbers) p)  
!) 
end-model
 |