#include #include #include void userEnter(int*pattern, int n); void print( int * s, int n); void recurs( int * s, int * a, int n, int wpegs, int bpegs); bool Done (int*s); bool bPegs(int*a ,int*s, int bpegs, int wpegs, int n); bool wPegs(int* modcom, int* modoriginal, int*s, int wpegs, int w); void change(int*modoriginal, int*modcom, int i, int k, int w); int main(void) { int i, n, bpegs, wpegs; printf("Enter the pattern length: "); scanf("%d",&n); int *a = (int*)malloc((n)*(sizeof(int))); printf("Input the guess pattern: "); int pattern[n]; userEnter(pattern, n); printf("Enter the number of black pegs in the feedback: "); scanf("%d",&bpegs); printf("Enter the number of white pegs in the feedback: "); scanf("%d",&wpegs); printf("The possible key patterns are: "); for(i=0; i<=n-1; i++) { a[i]=0; } print(a, n); recurs(a, pattern, n, wpegs, bpegs); } void userEnter(int*pattern, int n) { char input[n]; scanf("%s",&input); int i; for(i = 0; i < n-1; i++) { pattern[i] = input[i]-65; } } void print( int * s, int n) { int i; printf( "n" ); for( i = n-1; i >= 0; i-- ) { printf( "%c", ( s[ i ] + 65 ) ); } } void recurs( int * s, int * a, int n, int wpegs, int bpegs) { int i; if(Done(s)) { print( s, n); printf( "nAccomplisshed!n" ); } else{ s[ 0 ] += 1; for( i = 0; i < n-1; i++ ) { if( s[ i ] == 6 ){ s[ i ] = 0; s[ i + 1 ] += 1; } } if(bPegs(a ,s, bpegs, wpegs, n)) { print( s, n); } recurs(s, a, n, wpegs, bpegs); } } bool Done (int*s) { int i; bool done=true; for (i=0;i<=11;i++) { if(s[i]!=5) { done=false; } } return done; } bool bPegs(int*a ,int*s, int bpegs, int wpegs, int n) { int i,j,c=0; bool d = false; for(i=0; i