11-17-2022, 11:39 PM
(This post was last modified: 11-17-2022, 11:41 PM by PhilOfPerth.)
(11-17-2022, 04:58 PM)bplus Wrote: Hi Phil,No, I don't just mean anagrams, I mean words that can be formed from *some* or *all* of the letters - RAT gives RAT, AT, ART, TA,TAR
What you are talking about are Anagrams, words with same letters in different order eg art, rat, tar
Here is a function that converts a word to an AnaCode$ by counting up the number of A's, then B's, then C's...
This forms a unique string of digits, so you can use repeated amounts of letters in a word (up to 9) and still compare words.
In Demo of function I compare to anagram which as you can see needs 3 a's:
Code: (Select All)_Title "AnaCode$ function" ' b+ 2022-11-17
test$(0) = "grmaana"
test$(1) = "angiogram"
test$(2) = "naagrma"
test$(3) = "telgram"
test$(4) = "gramana"
AC$ = AnaCode$("anagram")
For i = 0 To 4
If AC$ = AnaCode$(test$(i)) Then
Print test$(i); " is an anagram of 'anagram'"
Else
Print test$(i); " is NOT an anagram of 'anagram'"
End If
Next
Function AnaCode$ (wrd$) ' anaCode$ converts word to an Anagram pattern
' number of A's in first, number of B's in 2nd, number of C's in third
Dim L(26)
w$ = UCase$(wrd$)
For i = 1 To Len(wrd$)
p = Asc(w$, i) - 64 ' A=1, B=2...
L(p) = L(p) + 1
Next
For i = 1 To 26
rtn$ = rtn$ + _Trim$(Str$(L(i)))
Next
AnaCode$ = rtn$
End Function
With AnaCode$ you don't need to worry about word lengths.
Of all the places on Earth, and all the planets in the Universe, I'd rather live here (Perth, W.A.)