(!******************************************************
Mosel User Guide Example Problems
=================================
file listenum.mos
`````````````````
Enumerating a list in inverse order.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Oct. 2006
*******************************************************!)
model "Reversing lists"
declarations
K,L: list of integer
end-declarations
L:= [1,2,3,4,5,6,7,8,9,10]
! Standard enumeration
forall(i in L) writeln(i)
! Enumeration in inverse order:
! 1. Splitting off the last list element
K:=L
while (K <> []) writeln(getfirst(splittail(K,1)))
! 2. Reversing the list itself
reverse(L)
writeln("Reversed: ", L)
! 3. Reversed copy of the list
K:=getreverse(L)
writeln("Reverse once more: ", K, L)
end-model
|
(!******************************************************
Mosel User Guide Example Problems
=================================
file listinit.mos
`````````````````
Initializing lists with values.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Nov. 2006
*******************************************************!)
model "Initializing lists"
declarations
K,L: list of integer
M,N: array(range,set of integer) of list of string
S: set of integer
R: array(range,set of integer) of set of string
end-declarations
L:= [1,2,3,4,5,6,7,8,9,10]
M:: (2..4,1)[['A','B','C'],['D','E'],['F','G','H','I']]
writeln("L: ", L)
writeln("An entry of M: ", M(2,1))
initializations from "listinit.dat"
K N
end-initializations
writeln("K: ", K)
writeln("An entry of N: ", N(5,3))
initializations from "listinit.dat"
S as 'K' R as 'N'
end-initializations
writeln("Reading data into sets:")
writeln("S: ", S, "\nR: ", R)
end-model
|
(!******************************************************
Mosel User Guide Example Problems
=================================
file listmerge.mos
``````````````````
Merging two ordered lists into one ordered list.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Aug. 2006
*******************************************************!)
model "Merging lists"
declarations
K,L,M: list of integer
end-declarations
K:= [1,4,5,8,9,10,13]
L:= [-1,0,4,6,7,8,9,9,11,11]
writeln(K,L)
forall(k in K) do
while (L<>[] and k >= getfirst(L)) M += splithead(L,1)
M+= [k]
end-do
writeln(M)
end-model
|
(!******************************************************
Mosel User Guide Example Problems
=================================
file listops.mos
````````````````
List operations.
(c) 2008 Fair Isaac Corporation
author: S. Heipcke, Nov. 2006
*******************************************************!)
model "List operations"
declarations
L,M: list of integer
end-declarations
L:= [1,2,3] + [4,5]; writeln("L (1): ", L)
L+= [6,7,8]; writeln("L (2): ", L)
L-= [1,2,3]; writeln("L (3): ", L)
M:= sum(l in L) [l*2]; writeln("M: ", M)
writeln("L and M are different: ", L<>M)
end-model
|