SpidermanTuba
Rookie
- Banned
- #1
The TUba Top 101 College Football Teams
These are "unofficial" results of the TUba Top 101 for this week. First official ranking to come on Sunday. Hopefully some interconference play will result in this ranking making more sense.
After much popular request, non IA teams have been eliminated from the list. All college games across all divisions are included in the ratings calculation (to accurately rate games between IA and non IA teams), but non-IA teams are culled from the final list.
GO Tigahs
1 Iowa 1266 3-0
2 Michigan 1247 3-0
3 Wake Forest 1232 3-0
4 Boston College 1188 3-0
5 Virginia Tech 1176 3-0
6 Notre Dame 1137 2-1
7 Rutgers 1134 3-0
8 Southern Cal 1090 2-0
9 Kansas St 1009 3-0
10 Florida 987 3-0
11 Oregon 983 3-0
12 Auburn 971 3-0
13 Penn State 960 2-1
14 TCU 923 3-0
15 Syracuse 912 1-2
16 Clemson 909 2-1
17 Central Michigan 880 1-2
18 Iowa St 877 2-1
19 Oklahoma 869 2-1
20 Connecticut 869 1-1
21 Tennessee 856 2-1
22 Oklahoma St 849 3-0
23 Alabama 841 3-0
24 West Virginia 830 3-0
25 Ohio State 817 3-0
26 North Carolina 814 1-2
27 Georgia Tech 805 2-1
28 Washington 794 2-1
29 Washington St 777 2-1
30 Boise St 764 3-0
31 LSU 764 2-1
32 Ohio U. 751 2-1
33 Michigan St 743 3-0
34 Texas A&M 739 3-0
35 California 725 2-1
36 Duke 716 0-3
37 Nebraska 697 2-1
38 Arkansas 683 2-1
39 UCLA 666 2-0
40 Georgia 658 3-0
41 Hawai`i 648 1-1
42 Illinois 638 1-2
43 Navy 636 3-0
44 Western Michigan 628 2-1
45 Florida St 616 2-1
46 Southern Miss 611 2-1
47 Pittsburgh 610 2-1
48 Indiana 608 2-1
49 Akron 605 1-2
50 Missouri 580 3-0
51 Arkansas St 579 1-1
52 Brigham Young 576 1-2
53 Arizona 568 2-1
54 San José St 560 1-1
55 Fresno St 553 1-2
56 Marshall 551 1-2
57 Oregon St 539 1-1
58 Louisville 536 3-0
59 Texas Tech 527 2-1
60 Vanderbilt 524 0-3
61 Florida Atlantic 522 0-3
62 Texas 517 2-1
63 Toledo 511 1-2
64 Houston 509 3-0
65 Baylor 509 1-2
66 South Florida 497 3-0
67 Air Force 456 0-1
68 UNLV 454 1-2
69 Idaho 452 1-2
70 Wisconsin 449 3-0
71 Arizona St 448 3-0
72 Louisiana Tech 433 1-1
73 Alabama-Birmingham 430 1-2
74 Kansas 430 2-1
75 Maryland 426 2-1
76 Northern Illinois 410 1-2
77 South Carolina 407 2-1
78 New Mexico St 405 2-1
79 New Mexico 384 1-2
80 North Carolina St 376 1-2
81 Tulsa 371 2-1
82 Utah 368 2-1
83 Virginia 364 1-2
84 Troy 355 1-2
85 Louisiana-Lafayette 351 0-2
86 Minnesota 351 2-1
87 Tulane 341 1-1
88 Stanford 326 0-3
89 Cincinnati 323 1-2
90 Purdue 315 3-0
91 Army 310 1-2
92 Kentucky 308 2-1
93 Central Florida 295 1-2
94 Nevada 283 1-2
95 Bowling Green 260 2-1
96 Wyoming 255 1-2
97 Colorado St 247 2-1
98 UTEP 235 1-1
99 Northwestern 191 2-1
100 Miami FL 183 1-2
101 Mississippi St 173 0-3
102 North Texas 171 1-2
103 Rice 164 0-3
104 East Carolina 164 1-2
105 Ball St 163 1-2
106 Louisiana-Monroe 152 1-2
107 Mississippi 104 1-2
108 Buffalo 62 1-2
109 Middle Tennessee St 52 2-1
110 Utah St 35 0-3
111 SMU 25 1-2
112 Kent St 11 1-2
113 Eastern Michigan -35 0-3
114 San Diego St -58 0-2
115 Temple -84 0-3
116 Florida Int'l -130 0-3
117 Colorado -141 0-3
118 Memphis -175 1-2
119 Miami OH -228 0-3
Ratings are calculated by computer, using a method similar to the one used to rate chessplayers. If you have complaints, talk to the algorithm
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define MAXN 10000
#define MAXT 1000
#define MAXL 24
#define DELTA 400.0
typedef char name_t[ 25 ];
typedef struct
{
name_t name1;
name_t name2;
int score1;
int score2;
int i1;
int i2;
int result;
} game_t;
int read_games( game_t*, name_t*, FILE* );
void compute_scores( game_t*, double*, int*, int*, int, name_t* );
void sort_scores( int*, double*, int );
int main( void )
{
static game_t games[ MAXN ];
static name_t names[ MAXT ];
static double scores[ MAXT ];
static int ranks[ MAXT ];
FILE* fp;
int cnt;
int i, ia, ri, k;
static int w[ MAXT ];
static int l[ MAXT ];
static name_t IA[ 120 ];
static char str[ 64 ];
fp = fopen( "games.txt", "rt" );
cnt = read_games( games, names, fp );
fclose( fp );
compute_scores( games, scores, w, l, cnt, names );
sort_scores( ranks, scores, cnt );
fp = fopen( "teams.txt", "rt" );
fgets( str, MAXT, fp );
ia = 0;
while( !feof( fp ) )
{
strcpy( IA[ ia ], str );
IA[ ia ][ strlen( IA[ ia ] ) - 1 ] = '\0';
ia++;
fgets( str, MAXT, fp );
}
ri = 0;
for( i = 0; i < cnt; i++ )
{
for( k = 0; k < ia; k++ )
{
if( strcmp( names[ ranks[ i ] ], IA[ k ] ) == 0 )
{
ri++;
printf( "%i %25s %5.0f %i-%i\n", ri, names[ ranks[ i ] ], scores[ ranks[ i ] ], w[ ranks[ i ] ], l[ ranks[ i ] ] );
break;
}
}
}
return 0;
}
void sort_scores( int* r, double* s, int cnt )
{
int i, j, k;
for( i = 0; i < cnt; i++ )
r[ i ] = i;
for( i = 0; i < cnt-1; i++ )
{
for( j = 0; j < cnt-1; j++ )
{
if( s[ r[ j ] ] < s[ r[ j+1 ] ] )
{
k = r[ j+1 ];
r[ j+1 ] = r[ j ];
r[ j ] = k;
}
}
}
}
void compute_scores( game_t* g0, double* s, int* w, int* l, int cnt, name_t* n )
{
int i;
int j;
static int gcnt[ MAXT ];
static double os[ MAXN ];
game_t* g;
for( i = 0; i < cnt; i++ )
{
os[ i ] = 0.0;
gcnt[ i ] = 0;
}
g = g0;
while( g->i1 != -1 )
{
gcnt[ g->i1 ]++;
gcnt[ g->i2 ]++;
if( g->result == 1 )
{
w[ g->i1 ]++;
l[ g->i2 ]++;
}
else if( g->result == -1 )
{
w[ g->i2 ]++;
l[ g->i1 ]++;
}
g++;
}
for( j = 0; j < 10000; j++ )
{
for( i = 0; i < cnt; i++ )
s[ i ] = 0.0;
g = g0;
while( g->i1 != -1 )
{
s[ g->i1 ] += os[ g->i2 ];
s[ g->i2 ] += os[ g->i1 ];
if( g->result == 1 )
{
s[ g->i1 ] += DELTA;
s[ g->i2 ] -= DELTA;
}
else if( g->result = -1 )
{
s[ g->i1 ] -= DELTA;
s[ g->i2 ] += DELTA;
}
else
abort();
g++;
}
for( i = 0; i < cnt; i++ )
{
s[ i ] /= (double) gcnt[ i ];
os[ i ] = s[ i ];
}
}
}
int read_games( game_t* g, name_t* n, FILE* fp )
{
char buffer[ 256 ];
int i, j1, j2;
i = 0;
fgets( buffer, 255, fp );
while( !feof( fp ) )
{
strncpy( g->name1, buffer + 10, MAXL );
g->score1 = atoi( buffer + 37 );
strncpy( g->name2, buffer + 41, MAXL );
g->score2 = atoi( buffer + 68 );
for( j1 = 0; j1 < i; j1++ )
if( strncmp( g->name1, n[ j1 ], MAXL ) == 0 ) break;
if( j1 == i )
strncpy( n[ i++ ], g->name1, MAXL );
for( j2 = 0; j2 < i; j2++ )
if( strncmp( g->name2, n[ j2 ], MAXL ) == 0 ) break;
if( j2 == i )
strncpy( n[ i++ ], g->name2, MAXL );
g->i1 = j1;
g->i2 = j2;
if( g->score1 > g->score2 )
g->result = 1;
else if( g->score1 < g->score2 )
g->result = -1;
else
g->result = 0;
g++;
fgets( buffer, 255, fp );
}
g->i1 = -1;
for( j1 = 0; j1 < i; j1++ )
{
j2 = strlen( n[ j1 ] )-1;
while( n[ j1 ][ j2 ] == ' ' )
n[ j1 ][ j2-- ] = '\0';
}
return i;
}
These are "unofficial" results of the TUba Top 101 for this week. First official ranking to come on Sunday. Hopefully some interconference play will result in this ranking making more sense.
After much popular request, non IA teams have been eliminated from the list. All college games across all divisions are included in the ratings calculation (to accurately rate games between IA and non IA teams), but non-IA teams are culled from the final list.
GO Tigahs
1 Iowa 1266 3-0
2 Michigan 1247 3-0
3 Wake Forest 1232 3-0
4 Boston College 1188 3-0
5 Virginia Tech 1176 3-0
6 Notre Dame 1137 2-1
7 Rutgers 1134 3-0
8 Southern Cal 1090 2-0
9 Kansas St 1009 3-0
10 Florida 987 3-0
11 Oregon 983 3-0
12 Auburn 971 3-0
13 Penn State 960 2-1
14 TCU 923 3-0
15 Syracuse 912 1-2
16 Clemson 909 2-1
17 Central Michigan 880 1-2
18 Iowa St 877 2-1
19 Oklahoma 869 2-1
20 Connecticut 869 1-1
21 Tennessee 856 2-1
22 Oklahoma St 849 3-0
23 Alabama 841 3-0
24 West Virginia 830 3-0
25 Ohio State 817 3-0
26 North Carolina 814 1-2
27 Georgia Tech 805 2-1
28 Washington 794 2-1
29 Washington St 777 2-1
30 Boise St 764 3-0
31 LSU 764 2-1
32 Ohio U. 751 2-1
33 Michigan St 743 3-0
34 Texas A&M 739 3-0
35 California 725 2-1
36 Duke 716 0-3
37 Nebraska 697 2-1
38 Arkansas 683 2-1
39 UCLA 666 2-0
40 Georgia 658 3-0
41 Hawai`i 648 1-1
42 Illinois 638 1-2
43 Navy 636 3-0
44 Western Michigan 628 2-1
45 Florida St 616 2-1
46 Southern Miss 611 2-1
47 Pittsburgh 610 2-1
48 Indiana 608 2-1
49 Akron 605 1-2
50 Missouri 580 3-0
51 Arkansas St 579 1-1
52 Brigham Young 576 1-2
53 Arizona 568 2-1
54 San José St 560 1-1
55 Fresno St 553 1-2
56 Marshall 551 1-2
57 Oregon St 539 1-1
58 Louisville 536 3-0
59 Texas Tech 527 2-1
60 Vanderbilt 524 0-3
61 Florida Atlantic 522 0-3
62 Texas 517 2-1
63 Toledo 511 1-2
64 Houston 509 3-0
65 Baylor 509 1-2
66 South Florida 497 3-0
67 Air Force 456 0-1
68 UNLV 454 1-2
69 Idaho 452 1-2
70 Wisconsin 449 3-0
71 Arizona St 448 3-0
72 Louisiana Tech 433 1-1
73 Alabama-Birmingham 430 1-2
74 Kansas 430 2-1
75 Maryland 426 2-1
76 Northern Illinois 410 1-2
77 South Carolina 407 2-1
78 New Mexico St 405 2-1
79 New Mexico 384 1-2
80 North Carolina St 376 1-2
81 Tulsa 371 2-1
82 Utah 368 2-1
83 Virginia 364 1-2
84 Troy 355 1-2
85 Louisiana-Lafayette 351 0-2
86 Minnesota 351 2-1
87 Tulane 341 1-1
88 Stanford 326 0-3
89 Cincinnati 323 1-2
90 Purdue 315 3-0
91 Army 310 1-2
92 Kentucky 308 2-1
93 Central Florida 295 1-2
94 Nevada 283 1-2
95 Bowling Green 260 2-1
96 Wyoming 255 1-2
97 Colorado St 247 2-1
98 UTEP 235 1-1
99 Northwestern 191 2-1
100 Miami FL 183 1-2
101 Mississippi St 173 0-3
102 North Texas 171 1-2
103 Rice 164 0-3
104 East Carolina 164 1-2
105 Ball St 163 1-2
106 Louisiana-Monroe 152 1-2
107 Mississippi 104 1-2
108 Buffalo 62 1-2
109 Middle Tennessee St 52 2-1
110 Utah St 35 0-3
111 SMU 25 1-2
112 Kent St 11 1-2
113 Eastern Michigan -35 0-3
114 San Diego St -58 0-2
115 Temple -84 0-3
116 Florida Int'l -130 0-3
117 Colorado -141 0-3
118 Memphis -175 1-2
119 Miami OH -228 0-3
Ratings are calculated by computer, using a method similar to the one used to rate chessplayers. If you have complaints, talk to the algorithm
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define MAXN 10000
#define MAXT 1000
#define MAXL 24
#define DELTA 400.0
typedef char name_t[ 25 ];
typedef struct
{
name_t name1;
name_t name2;
int score1;
int score2;
int i1;
int i2;
int result;
} game_t;
int read_games( game_t*, name_t*, FILE* );
void compute_scores( game_t*, double*, int*, int*, int, name_t* );
void sort_scores( int*, double*, int );
int main( void )
{
static game_t games[ MAXN ];
static name_t names[ MAXT ];
static double scores[ MAXT ];
static int ranks[ MAXT ];
FILE* fp;
int cnt;
int i, ia, ri, k;
static int w[ MAXT ];
static int l[ MAXT ];
static name_t IA[ 120 ];
static char str[ 64 ];
fp = fopen( "games.txt", "rt" );
cnt = read_games( games, names, fp );
fclose( fp );
compute_scores( games, scores, w, l, cnt, names );
sort_scores( ranks, scores, cnt );
fp = fopen( "teams.txt", "rt" );
fgets( str, MAXT, fp );
ia = 0;
while( !feof( fp ) )
{
strcpy( IA[ ia ], str );
IA[ ia ][ strlen( IA[ ia ] ) - 1 ] = '\0';
ia++;
fgets( str, MAXT, fp );
}
ri = 0;
for( i = 0; i < cnt; i++ )
{
for( k = 0; k < ia; k++ )
{
if( strcmp( names[ ranks[ i ] ], IA[ k ] ) == 0 )
{
ri++;
printf( "%i %25s %5.0f %i-%i\n", ri, names[ ranks[ i ] ], scores[ ranks[ i ] ], w[ ranks[ i ] ], l[ ranks[ i ] ] );
break;
}
}
}
return 0;
}
void sort_scores( int* r, double* s, int cnt )
{
int i, j, k;
for( i = 0; i < cnt; i++ )
r[ i ] = i;
for( i = 0; i < cnt-1; i++ )
{
for( j = 0; j < cnt-1; j++ )
{
if( s[ r[ j ] ] < s[ r[ j+1 ] ] )
{
k = r[ j+1 ];
r[ j+1 ] = r[ j ];
r[ j ] = k;
}
}
}
}
void compute_scores( game_t* g0, double* s, int* w, int* l, int cnt, name_t* n )
{
int i;
int j;
static int gcnt[ MAXT ];
static double os[ MAXN ];
game_t* g;
for( i = 0; i < cnt; i++ )
{
os[ i ] = 0.0;
gcnt[ i ] = 0;
}
g = g0;
while( g->i1 != -1 )
{
gcnt[ g->i1 ]++;
gcnt[ g->i2 ]++;
if( g->result == 1 )
{
w[ g->i1 ]++;
l[ g->i2 ]++;
}
else if( g->result == -1 )
{
w[ g->i2 ]++;
l[ g->i1 ]++;
}
g++;
}
for( j = 0; j < 10000; j++ )
{
for( i = 0; i < cnt; i++ )
s[ i ] = 0.0;
g = g0;
while( g->i1 != -1 )
{
s[ g->i1 ] += os[ g->i2 ];
s[ g->i2 ] += os[ g->i1 ];
if( g->result == 1 )
{
s[ g->i1 ] += DELTA;
s[ g->i2 ] -= DELTA;
}
else if( g->result = -1 )
{
s[ g->i1 ] -= DELTA;
s[ g->i2 ] += DELTA;
}
else
abort();
g++;
}
for( i = 0; i < cnt; i++ )
{
s[ i ] /= (double) gcnt[ i ];
os[ i ] = s[ i ];
}
}
}
int read_games( game_t* g, name_t* n, FILE* fp )
{
char buffer[ 256 ];
int i, j1, j2;
i = 0;
fgets( buffer, 255, fp );
while( !feof( fp ) )
{
strncpy( g->name1, buffer + 10, MAXL );
g->score1 = atoi( buffer + 37 );
strncpy( g->name2, buffer + 41, MAXL );
g->score2 = atoi( buffer + 68 );
for( j1 = 0; j1 < i; j1++ )
if( strncmp( g->name1, n[ j1 ], MAXL ) == 0 ) break;
if( j1 == i )
strncpy( n[ i++ ], g->name1, MAXL );
for( j2 = 0; j2 < i; j2++ )
if( strncmp( g->name2, n[ j2 ], MAXL ) == 0 ) break;
if( j2 == i )
strncpy( n[ i++ ], g->name2, MAXL );
g->i1 = j1;
g->i2 = j2;
if( g->score1 > g->score2 )
g->result = 1;
else if( g->score1 < g->score2 )
g->result = -1;
else
g->result = 0;
g++;
fgets( buffer, 255, fp );
}
g->i1 = -1;
for( j1 = 0; j1 < i; j1++ )
{
j2 = strlen( n[ j1 ] )-1;
while( n[ j1 ][ j2 ] == ' ' )
n[ j1 ][ j2-- ] = '\0';
}
return i;
}