Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Verdrehen von Wörtern


  • Please log in to reply
7 replies to this topic
SAPlayer
  • Members
  • 403 posts
  • Last active: Apr 11 2014 04:45 PM
  • Joined: 06 Nov 2012

Hab hier mal aus Spaß eine kleine Funktion geschrieben, die Wörter zufällig verdreht. Vielleicht kanns ja mal jemand brauchen:

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



robert_ilbrink
  • Members
  • 561 posts
  • Last active: Nov 07 2019 05:14 PM
  • Joined: 05 May 2012

Etwas ähnliches hier für Sätze:

pTempAnswer:="Your text is entered here"
pTempSpacesList:=""
Loop, % StrLen( RegExReplace( pTempAnswer, "[^\s]", "" ) )
{
	StringGetPos, pTempSpacePos, pTempAnswer, %A_Space%, L%A_Index%
	pTempSpacesList=%pTempSpacesList% %pTempSpacePos% `,
}
StringTrimRight, pTempSpacesList, pTempSpacesList, 1 ; Remove last character (, delimiter)
pTempAnswerSpaceLess:=RegExReplace( pTempAnswer, "[\s]", "" )
pDelimitedString := ""
Loop, Parse, pTempAnswerSpaceLess ; Run through the spaceless word(s) letter by letter
	pDelimitedString = %pDelimitedString%%A_LoopField%|
StringTrimRight, pDelimitedString, pDelimitedString, 1 ; Remove last character (| delimiter)
Sort pDelimitedString, Random D| ; Randomize the spaceless string
StringReplace, pRandomizedAnswer, pDelimitedString,|,, All ; Remove all | from spaceless string
Loop, parse, pTempSpacesList, CSV ; Go through list with space positions and add spaces back
	pRandomizedAnswer := % SubStr(pRandomizedAnswer, 1, A_LoopField) . A_Space . Substr(pRandomizedAnswer, (A_LoopField+1))


faqbot
  • Members
  • 997 posts
  • Last active:
  • Joined: 10 Apr 2012
Etwas ähnliches: Jumble (Linien, Wörtern, Zeichen) http://www.autohotke...e-3#entry595522

Alibaba
  • Members
  • 435 posts
  • Last active: Nov 19 2014 04:21 PM
  • Joined: 01 Nov 2012

Du könntest die Funktion auch so modifizieren, das anfangs- und endbuchstabe immer gleich bleiben, dann wären die wörter immernoch lesbar.

Da gab es dochmal eine Studie, bei der man nachweisen konnte, das dass Gehirn Wörter nach einem Muster wiedererkennt, das nur von den beiden "Randbuchstaben", und der anzahl der jeweiligen enthalten buchstaben abhängig ist und nicht von deren Anordnung.

 

Desein Txet heir knasnt du ja acuh lseen. :)


Find the recent autohotkey version here: ahkscript.org


SAPlayer
  • Members
  • 403 posts
  • Last active: Apr 11 2014 04:45 PM
  • Joined: 06 Nov 2012

Ich glaub das kannste auch nicht mehr lesen: Ich bin ein Dsuaficfifsoetpaäslmnclpsahtrhfkashedgatn.

 

 

Aber ja, hab mal was kurz was geschrieben:

mixWord_keep(input){
	if(StrLen(input) <= 3)
		return input
	return SubStr(input, 1, 1) mixWord(SubStr(input, 2, -1)) SubStr(input, 0, 1)
}


faqbot
  • Members
  • 997 posts
  • Last active:
  • Joined: 10 Apr 2012
Sie hatten das mit "Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz" probieren mussen ;-) http://www.thelocal....0603-50071.html

Alibaba
  • Members
  • 435 posts
  • Last active: Nov 19 2014 04:21 PM
  • Joined: 01 Nov 2012
Das gilt natürlich nicht für solch lange zusammengesetzte Wörter. :D
Nur "bekannte" Wörter kann man so lesen.

Find the recent autohotkey version here: ahkscript.org


nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Aber auch hierbei merke ich das ich in einzelne Wörter unterteile.


Visit the new forum ahkscript.org.

http://ahkscript.org