Seite 1 von 1

Alle kombinationsmöglichkeiten eines Strings

Verfasst: 10.04.2012 17:34
von Sunny
Ich wollte mal wissen, wie ich es mit PB realisieren kann alle Kombinationsmöglichkeiten eines Strings ausgeben zu lassen.
Beispiel:
Ich habe einen String mit dem inhalt "ABCDE". Da dieser String 5 Zeichen enthält gibt es nun 120 Kombinationsmöglichkeiten, z.B.: "BACD" oder "ACBD" oder "ABDC" und immer so weiter.

Ich finde dafür einfach keinen passenden Ansatz und hoffe, das mir da jemand helfen kann.

Re: Alle kombinationsmöglichkeiten eines Strings

Verfasst: 10.04.2012 17:57
von STARGÅTE
Ist nicht sehr schnell (da nicht optimiert, sondern voller String-Funktionen) aber es funktioniert:

Code: Alles auswählen

Procedure.s StringPermutation(String.s, Separator.s=#LF$, Before.s="")
	Protected Output.s, Character.i, LastCharacter.i = Len(String)
	If LastCharacter = 1
		ProcedureReturn Before+String
	Else
		For Character = 1 To LastCharacter
			If Output : Output + Separator : EndIf
			Output + StringPermutation(Left(String,Character-1)+Mid(String,Character+1), Separator, Before+Mid(String,Character,1))
		Next
	EndIf
	ProcedureReturn Output
EndProcedure

Define String.s = "ABCD"
Define Permutation.s = StringPermutation(String)
Debug CountString(Permutation, #LF$)+1
MessageRequester(String, Permutation)