aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author=2022-02-16 14:45:57 +0100
committer=2022-02-16 14:45:57 +0100
commit04261bcecf09f5e7316f0bc6ab6873e73547184c (patch)
tree04e986956967c51531add932e6e2b86fdca30daf
parent5a8bfcad6f473e693bb3cefb1723293e9a2a34a0 (diff)
downloadsoikk-wordle-guesser-04261bcecf09f5e7316f0bc6ab6873e73547184c.tar.xz
soikk-wordle-guesser-04261bcecf09f5e7316f0bc6ab6873e73547184c.tar.zst
Bug fixes
-rw-r--r--guess.c48
1 files 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 <stdlib.h>
#include <unac.h>
-#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);