Page 1 of 1

Verdrehen von Wörtern

Posted: 30 Sep 2013, 14:00
by SAPlayer
Hab hier mal aus Spaß eine kleine Funktion geschrieben, die Wörter zufällig verdreht. Vielleicht kanns ja mal jemand brauchen:

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
}
Falls ihr was verbessern wollt könnt ihr mir das gerne mitteilen.
 
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

Re: Verdrehen von Wörtern

Posted: 13 Oct 2013, 15:10
by Seidenweber
SAPlayer wrote:Falls ihr was verbessern wollt könnt ihr mir das gerne mitteilen.
was ist schon "besser" oder "schlechert"?
Anders eben und vielleicht etwas kürzer:

Code: Select all

MsgBox,4160,, % MixWord("Selbstzerstörungsschalterkontrolllampenfassung")
MsgBox,4160,, % MixWord("Linksparteiabgeordnetenrechtsschutzversicherung")

MixWord(inVar) {
    S := RegExReplace(inVar,"(.)","$1|") 
    Sort, S, Random D|
    Return, RegExReplace(S,"\|")
}

Re: Verdrehen von Wörtern

Posted: 14 Oct 2013, 05:24
by fredchf
Hallo!
Ich hatte da auch mal was angefangen... ;)

Code: Select all

edit1 =
( JOIN
Aufgrund einer Studie an einer Englischen Universität ist es egal, in welcher Reihenfolge die Buchstaben in einem Wort stehen,
 das einzig wichtige dabei ist, dass der erste und letzte Buchstabe am richtigen Platz sind. Der Rest kann totaler Blödsinn sein,
 und du kannst es trotzdem ohne Probleme lesen. Das geht deshalb, weil wir nicht Buchstabe für Buchstabe einzeln lesen, sondern
 Wörter als Ganzes. Stimmt's? 
)
Gui, font, S12
Gui, Add, Text, cwhite w420 h20 +Left +backgroundtrans, Dein Text :
Gui, Add, Edit, w420 R10 vedit1 +Left, %edit1%
Gui, Add, Button,  w420 h30 gaction, >>> Text wandeln <<<
Gui, Add, Text, cwhite   w420 h20 +Left +backgroundtrans, Generierter Text :
Gui, Add, Edit, w420 R10 vedit2, 
Gui, Show,  , Lesbarer Buchstabensalat Generator
Gui, COlor, 00000
GOSUB, action
send, {end}
Return
; ------------------------------------------------------------------------------
GuiClose:
ExitApp
; ------------------------------------------------------------------------------
action:
gui, Submit, NoHide
GuiControl, , edit2, % salat(edit1)
Return
; ------------------------------------------------------------------------------
salat(str)
  {
    len = 0
    pos = 1
    Loop
    {
    	pos1 := RegExMatch(str, "[\wüöä]{4,}" , Unq, pos)
    	if pos1
    	 {
        new_str := new_str SubStr(str, pos, pos1 - pos) misch(unq)
        len := StrLen(unq)
        pos := pos1 + len
       }
      ELSE
    		break
    }
  RETURN new_str SubStr(str, pos)
  }
; ------------------------------------------------------------------------------
misch(str)
  {
    erste := SubStr(str, 1,1)
    letzte := SubStr(str, -0)
    StringTrimLeft, str2, str, 1
    STRINGTRIMRIGHT, str2, str2, 1
    Loop, Parse, str2
    	sort_str .= A_LoopField "`n"
    StringTrimRight, sort_str, sort_str, 1
    sort_str2 := sort_str
    Loop
    {
    	Sort, sort_str, RANDOM
      if sort_str !== %sort_str2%
    		{
;         MSGBOX, % sort_str "`n-----`n" sort_str2
        break
        }
    }
    Sort, sort_str, RANDOM
    StringReplace, new, sort_str, `n , , All
    RETURN  erste . new . letzte
  }

Re: Verdrehen von Wörtern

Posted: 14 Oct 2013, 06:52
by nnnik
Ich hatte auch mal so etwas ähnliches, es ging da aber um das verdrehen von Bytes bei Benutzung einer Identifikationsnummer, mit der man dann die Verdrehung zurück rechnen konnte.