
ich hatte etwas Zeit und da kam mir die Idee einmal wieder etwas zu programmieren.
Über ein Rätsel kam mir daher die Idee einmal zu sehen ob ich es schaffe aus einer Buchstabenfolge ein Wort auszulesen. Nach langer Zeit habe ich es auch geschafft, nicht schön aber es klappt. Das Problem liegt nur in der Zeit bei längeren Wörtern. Wörter bis 7 Buchstaben (5040 Buchstabenvariationen) ist die Zeit noch Akzeptabel aber dann..... Überirdisch. Ich gehe davon aus das es einen besseren, sauberen Source gibt.
Code: Alles auswählen
Global.s gLettern = UCase("aeeilrttz") ;Zeitalter
Procedure.i Fakultaet(vZahl.i)
Protected pResult.i = vZahl
For n=(vZahl-1) To 1 Step -1
pResult * n
Next n
ProcedureReturn pResult
EndProcedure
Procedure.s Variationen(vLettern.s)
Protected.b pOK
Protected.i n, pSize, pLen = Len(vLettern), pMax = Fakultaet(pLen)
Protected.s pWord, NewList pLettern(), NewList pWords()
AddElement(pWords()): pWords() = vLettern
For n=1 To pLen
AddElement(pLettern()): pLettern() = Mid(vLettern, n, 1)
Next n
Repeat
pOK = #True
RandomizeList(pLettern())
ForEach pLettern(): pWord + pLettern(): Next
ForEach pWords()
If (pWords()=pWord): pOK = #Null: Break: EndIf
Next
If pOK
AddElement(pWords()): pWords() = pWord
pSize = ListSize(pWords())
EndIf
pWord = #Null$
Until (pSize=>pMax)
;------------------------------------------------
ForEach pWords(): Debug pwords(): Next
Debug ListSize(pWords())
;----------------------------------------------------
EndProcedure
gLettern = "HVRECSUE" ;Versuch
Variationen(gLettern)
End