Saturday, March 18, 2023

Finding Words With All The Letters Programming project

Does anyone else lay in bed in the morning thinking about coding projects or is it just me? I’ve been playing around with a Wordle solver helper for a while now. It helps me find words based on what I know after each guess. One of the things I like to do is see how many possibilities there are based on different hints. Yesterday I had most of the letters but not in the right place. So this morning I was wondering about words that had the same letters but in different orders. Seemed like something I needed to write some code about.  

A key method is to compare all the letters in one string with the letters in a second string. At least the way I was thinking of handling it. It struck me that that is a great assignment for students. I don’t have any students handy so I asked ChatGPT to write that function. This is the prompt I gave it:

Write a C# function that accepts two strings and returns true if all of the letters in the first string are included, in any order, in the second string. Return false if any of the letters in the first string are not included in the second string.

That is a lot like what I would assign a student. ChatGPT gave me some very nice code. It wasn’t exactly like what I was writing in my head. It used foreach and ToCharArray which is probably the best and easiest way to do this. I was coding before either of those became common so my mind goes to for and while loops and the string SubString method. This was a good reminder for me.

I left the rest of the program, which wasn’t a lot of code, to myself.

Once written I had some fun with it. For example, the letters in Alfred also makeups the word flared. The letters in face are also used in café. Some groups of letters do not make up any words of course, This seems like it could be a fun project to give students. It was fun enough for me.

2 comments:

Anonymous said...

Would you post the created code?

Alfred Thompson said...

public static bool IsIncluded(string firstString, string secondString) {
if (string.IsNullOrEmpty(firstString) || string.IsNullOrEmpty(secondString)) {
// If either of the strings is null or empty, return false
return false;
}

// Convert the first string to a character array
char[] firstChars = firstString.ToCharArray();

// Iterate over each character in the first string
foreach (char c in firstChars) {
// If the character isn't in the second string, return false
if (secondString.IndexOf(c) == -1) {
return false;
}
}

// All characters in the first string are present in the second string
return true;
}