- 210 名前:とりあえず mailto:sage [2007/09/21(金) 01:31:27 ]
- >104 で場に出すまで (しかしまだ入力できない...力尽きた)
int field[52],numOfSet,passCount; int sequence(int *chkHand, int len){ int i=0; if(len>=3) for(i=1; i<len; ++i) if(getCmpRank(chkHand+i)!=getCmpRank(chkHand+i-1)+1 || *(chkHand+i)/13!=*(chkHand+i-1)/13) break; return (i==len)?getCmpRank(&chkHand[len-1]):0; } int pair(int *chkHand, int len){ int i; for(i=1; i<len; ++i) if(*(chkHand+i)%13!=*(chkHand+i-1)%13) break; return (i==len)?len*10+*(chkHand+len-1)%13:0; } int higher(int *nowHand, int len){ int stat; if(numOfSet==0 && (len<=1 || pair(nowHand,len) || sequence(nowHand,len))) return 1; else{ if(0<(stat=sequence(field,numOfSet)) && stat<sequence(nowHand,len)) return 1; if(0<(stat=pair(field,numOfSet)) && stat<pair(nowHand,len)) return 1; } return 0; } int putCard(int player, int *list, int len){ int i, nowHand[52]; if(len<=numOfHand[player]){ for(i=0; i<len; ++i) nowHand[i]=hand[player][*(list+i)]; qsort(nowHand, len, sizeof(int *), cmp); if(higher(nowHand, len)){ for(i=0; i<len; ++i){ hand[player][*(list+i)]=hand[player][--numOfHand[player]]; field[i]=nowHand[i]; } return (numOfSet = len); } } return 0; } : numOfSet=passCount=0; if(putCard(i, list, len)==0) ++passCount; else passCount=0;
|

|