Programm um Zahlenkombinationen zu ermitteln und auszugeben...

mandys

Well-known member
18 Februar 2009
171
19
Hallo Leute,

kann mir jemand eventuell hier weiterhelfen? Ich suche ein bestimmtes Programm oder ein Script, welches folgendes erledigen kann...

Es geht um folgende Sache.

Ich habe die Zahlen 01 (wichtig, beginnend mi"0") bis 11

Aus diesen Zahlen sollen alle möglichen Kombinationen erstellt und ausgegeben werden, wobei pro Zahlenreihe jede Zahl nur einmal vorkommen darf und welches auch mit der führenden "0" zurechtkommt wenn die Zahl einsellig ist.

Vielleicht jetzt nicht nach dem selben Muster aber das selbe Prinzip halt...

01
01-02
01-02-03
01-02-04
01-02-05
01-02-06
01-02-07
01-02-08
01-02-09
01-02-10
01-02-11
01-02-03-04
01-02-03-05
01-02-03-06
01-02-03-07
01-02-03-08
01-02-03-09
01-02-03-10
01-02-03-11
01-02-03-04-05
01-02-03-04-06
01-02-03-04-07
01-02-03-04-08
01-02-03-04-09
01-02-03-04-10
01-02-03-04-11
01-02-03-05-06
01-02-03-05-07
01-02-03-05-08

usw. halt

bis wirklich jede mögliche Kombination davon ausgegebn wurde...

Ich hab gesucht wie ne blöde, aber bin nirgendwo fündig geworden...ich bekomm das nicht wirklich hin, deswegen frag ich mal vorsichtig hier nach...

Vielen Dank für konstruktive Vorschläge...

Melanie
 
hi...

ich denke aber, dass jegliche BruteForce Programme dies lediglich mit Zahlen von 0-9 können und das ich dann die Liste der Zahlenreihen habe ist auch nicht sicher... wobei...mit den Zahlen, von 0-9 wär zu verkraften fällt mir grad ein.

Kennst du eins, was die Ergebnisse dann auflisten oder abspeichern lässt?
 
0-9 oder 1-11 is doch egal. Nimmstde halt Buchstaben, die gehen von A bis K ;)
 
Hab mich mal aus Spaß drangesetzt und das programmiert.
Die Speicherkomplexität kann man noch gut mit dem arbeitenden von Referenzen senken, Laufzeit denke ich jedoch nicht.

Code:
PHP:
<?php

function recursiveCombinatorics($strings, $removed , &$combinations, $recursionLevel, $debug) {
	$rec = str_repeat(' ', 8*$recursionLevel);
	
	foreach($strings as $i => $string) {
		if($debug) printf("%srecursiveCombinatorics(strings=array(%s), removed=array(%s), combinations=array(%s))<br>",
			$rec,
			implode(', ', $strings),
			implode(', ', $removed),
			implode(', ', array_keys($combinations))
		);
		
		// recursive argument
		$recRemoved = array_merge($removed, array($string));
		$recStrings = $strings;
		unset($recStrings[$i]);
		
		// (recursive) check for combinations
		sort($recRemoved);
		$combination = implode('-', $recRemoved);
		if(!isset($combinations[$combination])) {
			$combinations[$combination] = 0;
			
			if(count($recStrings) > 0) {
				recursiveCombinatorics($recStrings, $recRemoved, $combinations, ++$recursionLevel, $debug);
				$recursionLevel--;
			}
		}
	}
}

// Kombinationen suchen
$strings = array('01', '03', '02', '04');
$combinations = array();
recursiveCombinatorics($strings, array(), $combinations, 0, false);

// Ausgeben
ksort($combinations);
foreach($combinations as $combination => $devNull)
	echo "$combination<br>";

Ausgabe:
Code:
01
01-02
01-02-03
01-02-03-04
01-02-04
01-03
01-03-04
01-04
02
02-03
02-03-04
02-04
03
03-04
04


Kombinationen der Zahlen 01 bis 11 im Anhang:
 

Anhänge

  • mandy_combinations.txt
    35 KB · Aufrufe: 19
  • Like
Reaktionen: Xot
Hi...

das is ja cool, danke schön... funktioniert einwandfrei :)

hatte schon nach Programmen gesucht aber keines gefunden, dass das ganze erfüllt.

@theHacker
0-9 oder 1-11 is doch egal. Nimmstde halt Buchstaben, die gehen von A bis K

Das wäre auch gegangen, auf so simple Sachen komm ich gar nicht, denke anscheinend viel zu kompliziert :biggrin:
 
Das wäre auch gegangen, auf so simple Sachen komm ich gar nicht, denke anscheinend viel zu kompliziert :biggrin:
Bei solchen Script-Kleinkram findet man selten etwas, was alles so macht, wie man will. Der Trick - drum immer gleich drandenken - viele Tools zusammenbenutzen.
 
aber das Script funktioniert doch gar nciht richtig, oder ?
wenn in jeder Zeile nur ein Wert einmal vorkommen darf, wo sind dann kombinationen wie

02-01-03
oder
02-03-01

?