RosettaCodeData/Task/Averages-Mode/M2000-Interpreter/averages-mode-1.m2000
2023-07-01 13:44:08 -04:00

44 lines
1.6 KiB
Text

Module Checkit {
\\ find mode
Function GetMode {
Inventory N
Inventory ALLMODES
m=1
While not empty {
if islet then {
Read A$
if Exist(N, A$) then {
k=Eval(N)
k++
if m=k then {
Append ALLMODES, A$
}
if m<k then m=k : Clear ALLMODES : Append ALLMODES, A$
return N, A$:=k
} Else Append N, A$:=1 : if m=1 then Append ALLMODES, A$
} else {
Read A
if Exist(N, A) then {
k=Eval(N)
k++
if m=k then {
Append ALLMODES, A
}
if m<k then m=k : Clear ALLMODES : Append ALLMODES, A
return N, A:=k
} Else Append N, A:=1 : if m=1 then Append ALLMODES, A
}
}
=ALLMODES
}
Print GetMode(1, 2, 3, 1, 2, 4, 2, 5, 2, 3, 3, 1, 3, 6) ' print 2 3
Dim A()
A()=(1, 2, 3, 1, 2, 4, 2, 5, 2, 3, 3, 1, 3, 6)
\\ get a pointer from A
m=A()
Print GetMode(!m) ' print 2 3
z=stack:=1, 2,"B", 3, 1, 2, "B", 4, 2, 5,"B", 2, 3, 3, 1, 3, 6, "B"
Print GetMode(!z) ' print 2 3 B
}
Checkit