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.)
Please visit my Website at: http://oldendayskids.blogspot.com/
Please visit my Website at: http://oldendayskids.blogspot.com/