Compare commits

...
2 Commits
Author SHA1 Message Date
reeceal105988 9ac5eb5386 increase max tries 2026-10-16 18:05:10 +02:00
reeceal105988 d5d547a051 added horizontal orientation 2026-10-16 18:04:58 +02:00
+21 -4
View File
@@ -30,12 +30,12 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi
{ {
// test length: // test length:
// (re-)try randomly // (re-)try randomly
int retries = searchFieldLen * 2; int retries = searchFieldLen * searchFieldLen; // x*y: sehr unwahrscheinlich dass kein Treffer gefunden wird
int placed = 0; int placed = 0;
if(strlen(words[word]) >= searchFieldLen) break; if(strlen(words[word]) >= searchFieldLen) break;
// int vertical = rand() / (RAND_MAX / 2); int vertical = rand() / (RAND_MAX / 2);
int vertical = 1; // int vertical = 0;
while (!placed && retries > 0) while (!placed && retries > 0)
{ {
unsigned int x = 0; unsigned int x = 0;
@@ -54,7 +54,10 @@ int createWordSalad(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsi
} }
// printf("Placing %s at %d,%d\n", words[word], x, y); // printf("Placing %s at %d,%d\n", words[word], x, y);
if (vertical)
placed = tryPlaceVertical(salad, searchFieldLen, words[word], x, y); placed = tryPlaceVertical(salad, searchFieldLen, words[word], x, y);
else
placed = tryPlaceHorizontal(salad, searchFieldLen, words[word], x, y);
// if (placed) printf("Placed %s at %d,%d!\n", words[word], x, y); // if (placed) printf("Placed %s at %d,%d!\n", words[word], x, y);
@@ -103,6 +106,20 @@ int tryPlaceVertical(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], uns
int tryPlaceHorizontal(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char word[], unsigned int x, unsigned int y) int tryPlaceHorizontal(char salad[MAX_SEARCH_FIELD_LEN][MAX_SEARCH_FIELD_LEN], unsigned int searchFieldLen, const char word[], unsigned int x, unsigned int y)
{ {
// TODO; int wordLen = strlen(word);
for (int testX = x; testX < (x + wordLen); testX++)
{
if (salad[y][testX] != '\0') {
// printf("Besetzt!\n");
return 0;
}
}
// if ok then put my word in
for (int placeChar = 0; placeChar < wordLen; placeChar++)
{
salad[y][x + placeChar] = word[placeChar];
}
return 1; return 1;
} }