Word wheel: Difference between revisions

1,276 bytes added ,  3 years ago
Added C solution
(Added Go)
(Added C solution)
Line 37:
dictionary please state which one you have used.
<br><br>
 
=={{header|C}}==
<lang c>#include <stdio.h>
 
#define MAX_WORD 80
 
void word_wheel(const char* letters, char central, int min_length, FILE* dict) {
int max_count[26] = { 0 };
for (const char* p = letters; *p; ++p) {
char c = *p;
if (c >= 'a' && c <= 'z')
++max_count[c - 'a'];
}
char word[MAX_WORD + 1] = { 0 };
while (fgets(word, MAX_WORD, dict)) {
int count[26] = { 0 };
for (const char* p = word; *p; ++p) {
char c = *p;
if (c == '\n') {
if (p >= word + min_length && count[central - 'a'] > 0)
printf("%s", word);
} else if (c >= 'a' && c <= 'z') {
int i = c - 'a';
if (++count[i] > max_count[i]) {
break;
}
} else {
break;
}
}
}
}
 
int main(int argc, char** argv) {
const char* dict = argc == 2 ? argv[1] : "unixdict.txt";
FILE* in = fopen(dict, "r");
if (in == NULL) {
perror(dict);
return 1;
}
word_wheel("ndeokgelw", 'k', 3, in);
fclose(in);
return 0;
}</lang>
 
{{out}}
<pre>
eke
elk
keel
keen
keg
ken
keno
knee
kneel
knew
know
knowledge
kong
leek
week
wok
woke
</pre>
 
=={{header|C++}}==
1,777

edits