From 04261bcecf09f5e7316f0bc6ab6873e73547184c Mon Sep 17 00:00:00 2001 From: = <=> Date: Wed, 16 Feb 2022 14:45:57 +0100 Subject: [PATCH] Bug fixes --- guess.c | 48 +++++++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/guess.c b/guess.c index 6bd5e18..63c8740 100644 --- a/guess.c +++ b/guess.c @@ -2,9 +2,6 @@ #include #include -#define WLEN 5 - - int len(char *w){ int l = -1; @@ -20,19 +17,30 @@ char *minimize(char *w){ r[i] = w[i] - 'A' + 'a'; else r[i] = w[i]; + r[l] = '\0'; return r; } int hasC(char *w, char c){ - int l = 0; - while(w[l]){ - if(w[l] == c) - return 1; - ++l; + int i = 0; + while(w[i]){ + if(w[i] == c) + return 1; + ++i; } return 0; } +char *append(char *w, char c){ + int l = len(w); + char *r = malloc((l+1)*sizeof(char)); + for(int i = 0; i < l; ++i) + r[i] = w[i]; + r[l] = c; + r[l+1] = '\0'; + return r; +} + int equals(char *w1, char *w2){ int l1 = 0, l2 = 0; while(w1[l1] && w2[l2] && w1[l1] == w2[l2]) @@ -71,7 +79,6 @@ int main(int argc, char *argv[]){ char *black = "....."; int print = 0; - for(int i = 1; i < argc; ++i){ if(equals(argv[i], "-g")){ ++i; @@ -99,14 +106,14 @@ int main(int argc, char *argv[]){ sol = fopen("sol.txt", "w"); int lc = getLineCount(fp); - + for(int l = 0; l < lc; ++l){ char *word; size_t len = 0; len = getline(&word, &len, fp); unac_string("UTF-8", word, len, &word, &len); word[len--] = '\0'; - word = minimize(word); + //word = minimize(word); int found = 1; for(int i = 0; i < gl; ++i) @@ -114,20 +121,26 @@ int main(int argc, char *argv[]){ found = 0; break; } - if(found){ for(int i = 0; i < yl; ++i) if(yellow[i] != '.' && !hasC(word, yellow[i]) || word[i] == yellow[i]){ found = 0; break; } - if(found){ - for(int i = 0; i < bl; ++i) - if(hasC(word, black[i])){ - found = 0; - break; + for(int i = 0; i < bl; ++i){ + if(!hasC(green, black[i]) && !hasC(yellow, black[i])){ + if(hasC(word, black[i])){ + found = 0; + break; + } + }else{ + if(black[i] != '.' && !hasC(word, black[i]) || word[i] == black[i]){ + found = 0; + break; + } } + } } } @@ -136,6 +149,7 @@ int main(int argc, char *argv[]){ if(print) printf("%s", word); } + //printf("check\n\n"); } fclose(fp); -- 2.39.5