Untitled
unknown
c_cpp
3 years ago
2.5 kB
6
Indexable
#include<bits/stdc++.h> using namespace std; void prepare(); void ask(); void answer(); void think(); int ans[5040][4]; //store 10*9*8*7 int a,b; //store user's feedback int randNum; int remain; int isOver; int main() { prepare(); while(!isOver) { ask(); answer; if(isOver) { break; } think(); cout << "-------------" << endl; } getchar(); return 0; } void prepare(){ int i,tmp,unit_1,unit_10,unit_100,unit_1000; remain=5040; tmp=0; //for counting randNum isOver=0; //over or not for(i=0;i<10000;i++){ //produce ans base unit_1 = (i/1)%10; //split to 4 nums unit_10 = (i/10)%10; unit_100 = (i/100)%10; unit_1000 = (i/1000)%10; if(unit_1!=unit_10 && unit_1!=unit_100 && unit_1!=unit_1000 && unit_10!=unit_100 && unit_10!=unit_1000 && unit_100!=unit_1000){ ans[tmp][0] = unit_1000; ans[tmp][1] = unit_100; ans[tmp][2] = unit_10; ans[tmp][3] = unit_1; tmp++; } } } void ask(){ int i; printf("I guess the number: "); srand(time(0)); while(1==1){ randNum=0; for(i=0;i<4;i++){ randNum *= 10; randNum += rand()%10; } if(randNum<remain) break; } for(i=0;i<4;i++) printf("%d",ans[randNum][i]); printf("?\n"); } void answer() { char input[500]; cout << "A:"; fgets(input,sizeof(input),stdin); *(input+strlen(input)-1)='\0'; cout << "B:"; fgets(input,sizeof(input),stdin); *(input+strlen(input)-1)='\0'; if(a==4) { cout << "Nice! What a good game!" << endl; isOver = 1; } } void think(void){ int i,j,k,aa,bb; int refer[4]; for(i=0;i<4;i++){ refer[i]=ans[randNum][i]; } for(i=0;i<remain;i++){ aa = bb = 0; // for(j=0;j<4;j++){ //compare for(k=0;k<4;k++){ if(ans[i][j]==refer[k]){ if(j==k) aa++; else bb++; } } } if(!((aa==a)&&(bb==b))){ //reamin the ans that a value equals b value for(j=i;j<remain;j++){ for(k=0;k<4;k++){ ans[j][k]=ans[j+1][k]; } } remain--; i--; } } }
Editor is loading...