Verdrehen von Wörtern

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

User avatar
SAPlayer
Posts: 48
Joined: 30 Sep 2013, 13:38
Location: Germany
Contact:

Verdrehen von Wörtern

30 Sep 2013, 14:00

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
User avatar
Seidenweber
Posts: 17
Joined: 30 Sep 2013, 11:40

Re: Verdrehen von Wörtern

13 Oct 2013, 15:10

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,"\|")
}
Questions and answers are related to AHK 1.1.13.01 (x64) & Win 7 pro x64
fredchf
Posts: 54
Joined: 30 Sep 2013, 14:55

Re: Verdrehen von Wörtern

14 Oct 2013, 05:24

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
  }
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Verdrehen von Wörtern

14 Oct 2013, 06:52

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.
Recommends AHK Studio

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 16 guests