package uma;
import tool.*;
public class pro {
int s,datanumber;
String[] data=new String[50000];
String[] race=new String[50000];
String[] name=new String[50000];
int[] point=new int[50000];
String[] dic=new String[7000];
String[] code=new String[7000];
int[][] v=new int[7000][7000];
int power[]=new int[7000];
int p[]=new int[7000];
public static void main(String[] args) {
pro r=new pro();
}
pro(){
readfile sub=new readfile();
sub.makedata("uma.csv","UTF-8");
data=sub.data;
datanumber=sub.datanumber;
for(s=2;s<datanumber+1;s++){
String[] x=data[s].split(",");
race[s]=x[0];
name[s]=x[5];
point[s]=numx(x[1]);
if(point[s]==0)point[s]=9999;
}
System.out.println(point[10]);
int sx,h;
int dicnumber=0;
for(s=2;s<datanumber+1;s++){
h=0;
for(sx=1;sx<dicnumber+1;sx++){
if(name[s].equals(dic[sx]))h=100;
}
if(h<50)dicnumber=dicnumber+1;
if(h<50)dic[dicnumber]=name[s];
}
System.out.println(dicnumber);
int number=0;
for(s=2;s<datanumber+1;s++){
h=0;
for(sx=1;sx<number+1;sx++){
if(race[s].equals(code[sx]))h=100;
}
if(h<50)number=number+1;
if(h<50)code[number]=race[s];
}
System.out.println(number);
String[] play=new String[100];
int[] count=new int[100];
int[] hoa=new int[100];
for(s=1;s<number+1;s++){
int tx=0;
for(sx=2;sx<datanumber+1;sx++){
if(race[sx].equals(code[s]))tx=tx+1;
if(race[sx].equals(code[s]))play[tx]=name[sx];
if(race[sx].equals(code[s]))count[tx]=point[sx];
}
int delta=tx;
for(sx=1;sx<delta+1;sx++){
for(tx=1;tx<dicnumber+1;tx++){
if(play[sx].equals(dic[tx]))hoa[sx]=tx;
}
}
for(sx=1;sx<delta+1;sx++){
for(tx=1;tx<delta+1;tx++){
int s1=hoa[sx];
int s2=hoa[tx];
if(count[sx]<count[tx])v[s1][s2]=v[s1][s2]+1;
}
}
}
for(s=1;s<dicnumber+1;s++){
power[s]=50;
}
int trs;
for(trs=1;trs<11;trs++){
for(s=1;s<dicnumber+1;s++){
double[] rate=new double[1000];
int[] tai=new int[1000];
int tx;
sx=0;
for(tx=1;tx<dicnumber+1;tx++){
int c1=v[s][tx];
int c2=v[tx][s];
h=0;
if(c1>0)h=100;
if(c2>0)h=100;
if(h>50)sx=sx+1;
if(h>50)rate[sx]=(double)c1/(c1+c2);
if(h>50)tai[sx]=tx;
}
int number_t=sx;
int n;
int nx=1;
double minp=9999999;
for(n=1;n<101;n++){
double e=0;
for(sx=1;sx<number_t+1;sx++){
int s1=tai[sx];
double p1=(double)n/(n+power[s1]);
e=e+(p1-rate[sx])*(p1-rate[sx]);
}
if(e<minp)nx=n;
if(e<minp)minp=e;
}
p[s]=nx;
}
for(s=1;s<dicnumber+1;s++){
power[s]=p[s];
}
System.out.println(trs);
}
for(s=1;s<dicnumber+1;s++){
if(power[s]<10) System.out.println(dic[s]+","+power[s]);
}
}
int numx(String str){
int nx;
nx=0;
try{
nx=Integer.parseInt(str);
}catch (Exception e) {}
return nx;
}
}
最終更新:2016年05月12日 16:32