Alle kombinationsmöglichkeiten eines Strings

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sunny
Beiträge: 290
Registriert: 19.02.2009 06:02

Alle kombinationsmöglichkeiten eines Strings

Beitrag 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.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Alle kombinationsmöglichkeiten eines Strings

Beitrag 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)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten