101 lines
1.8 KiB
Awk
101 lines
1.8 KiB
Awk
##
|
|
## Dense ranking in file: ranking_d.awk
|
|
##
|
|
|
|
BEGIN{ lastresult = "!"; lastrank = 0 }
|
|
|
|
function d_rank(){
|
|
if($1==lastresult){
|
|
print lastrank, $0
|
|
}else{
|
|
lastresult = $1
|
|
print ++lastrank, $0 }
|
|
}
|
|
//{d_rank() }
|
|
|
|
##
|
|
## Fractional ranking in file: ranking_f.awk
|
|
##
|
|
|
|
BEGIN{
|
|
last = "!"
|
|
flen = 0 }
|
|
|
|
function f_rank(){
|
|
item = $0
|
|
if($1!=last){
|
|
if(flen){
|
|
sum = 0
|
|
for(fl=0; fl < flen;){
|
|
$0 = fifo[fl++]
|
|
sum += $1 }
|
|
mean = sum / flen
|
|
for(fl=0; fl < flen;){
|
|
$0 = fifo[fl++]
|
|
$1 = ""
|
|
printf("%3g %s\n", mean, $0) }
|
|
flen = 0
|
|
}}
|
|
$0 = item
|
|
last = $1
|
|
fifo[flen++] = sprintf("%i %s", FNR, item)
|
|
}
|
|
//{f_rank()}
|
|
|
|
END{ if(flen){
|
|
sum = 0
|
|
for(fl=0; fl < flen;){
|
|
$0 = fifo[fl++]
|
|
sum += $1 }
|
|
mean = sum / flen
|
|
for(fl=0; fl < flen;){
|
|
$0 = fifo[fl++]
|
|
$1 = ""
|
|
printf("%3g %s\n", mean, $0) }}}
|
|
|
|
##
|
|
## Modified competition ranking in file: ranking_mc.awk
|
|
##
|
|
|
|
BEGIN{
|
|
lastresult = "!"
|
|
flen = 0 }
|
|
|
|
function mc_rank(){
|
|
if($1==lastresult){
|
|
fifo[flen++] = $0
|
|
}else{
|
|
for(fl=0; fl < flen;){
|
|
print FNR-1, fifo[fl++]}
|
|
flen = 0
|
|
fifo[flen++] = $0
|
|
lastresult = $1}
|
|
}
|
|
//{mc_rank()}
|
|
|
|
END{ for(fl=0; fl < flen;){
|
|
print FNR, fifo[fl++]} }
|
|
|
|
##
|
|
## Ordinal ranking in file: ranking_o.awk
|
|
##
|
|
|
|
function o_rank(){ print FNR, $0 }
|
|
//{o_rank() }
|
|
|
|
##
|
|
## Standard competition ranking in file: ranking_sc.awk
|
|
##
|
|
|
|
BEGIN{ lastresult = lastrank = "!" }
|
|
|
|
function sc_rank(){
|
|
if($1==lastresult){
|
|
print lastrank, $0
|
|
}else{
|
|
print FNR, $0
|
|
lastresult = $1
|
|
lastrank = FNR}
|
|
}
|
|
//{sc_rank()}
|