Code: Select all
mixWord(input, level=3){
if(StrLen(input) <= 1)
return input
chars := Object()
in := input
chars_num := StrLen(in)
loop{
loop, %level%
{
loop, Parse, in
chars[A_Index] := A_LoopField
output := ""
loop, %chars_num%
{
Random, rand, 0, 1
if(rand = 0)
output .= chars[A_Index]
else
output := chars[A_Index] output
}
in := output
}
} until output != input
return output
}
Level-Parameter:
Der Level-Parameter ist relativ nutzlos, ich wollte nur schauen, ob sein Wert einen Unterschied macht.
Zur Funktionsweise:
Zuerst wird geprüft, ob das Wort mindestens 2 Zeichen hat, sonst kann man es nicht verdrehen und es kommt wieder im Originalzustand zurück. Dann wird es in die einzelnen Buchstaben aufgeteilt, nun wird pro einzelnem Zeichen eine Zufallszahl zwischen 0 oder 1 gebildet, diese entscheidet, ob der aktuelle Buchstabe vor oder nach dem Aktuellem landet. Das geht level mal vonstatten.
Nun wird noch kurz überprüft, ob das jetzt erhaltene das gleiche ist wie vorher, dann wird das Ganze wiederholt.
SAPlayer