62 lines
1.2 KiB
Text
62 lines
1.2 KiB
Text
func[] StandardRank d[] .
|
|
for i to len d[]
|
|
if i = 1 or d[i] <> d[i - 1] : k = i
|
|
r[] &= k
|
|
.
|
|
return r[]
|
|
.
|
|
func[] ModifiedRank d[] .
|
|
for i to len d[]
|
|
k = i
|
|
j = i + 1
|
|
while j <= len d[] and d[i] = d[j]
|
|
k = j
|
|
j += 1
|
|
.
|
|
r[] &= k
|
|
.
|
|
return r[]
|
|
.
|
|
func[] DenseRank d[] .
|
|
for i to len d[]
|
|
if i = 1 or d[i] <> d[i - 1] : k += 1
|
|
r[] &= k
|
|
.
|
|
return r[]
|
|
.
|
|
func[] OrdinalRank d[] .
|
|
for i to len d[] : r[] &= i
|
|
return r[]
|
|
.
|
|
func[] FractionalRank d[] .
|
|
i = 1
|
|
while i <= len d[]
|
|
f = i
|
|
j = i + 1
|
|
while j <= len d[] and d[i] = d[j]
|
|
f += j
|
|
j += 1
|
|
.
|
|
f /= (j - i)
|
|
while i < j
|
|
r[] &= f
|
|
i += 1
|
|
.
|
|
.
|
|
return r[]
|
|
.
|
|
data[] = [ 44 42 42 41 41 41 39 ]
|
|
names$[] = [ "Solomon" "Jason" "Errol" "Garry" "Bernard" "Barry" "Stephen" ]
|
|
#
|
|
proc show name$ r[] .
|
|
print name$ & " Ranking"
|
|
for i to len names$[]
|
|
print " " & r[i] & " - " & data[i] & " " & names$[i]
|
|
.
|
|
print ""
|
|
.
|
|
show "Standard" StandardRank data[]
|
|
show "Modified" ModifiedRank data[]
|
|
show "Dense" DenseRank data[]
|
|
show "Ordinal" OrdinalRank data[]
|
|
show "Fractional" FractionalRank data[]
|