?
JFB schrieb:
Die Frage ist irreführend. Permutation heißt eine Umordnung einer Folge, damit bijektiv, was man von 777777 nicht unbedingt sagen kann.
Hast du dich mit dem Begriff Permutationen vertan und meintest eigentlich die Wörter über dem gegebenen Alphabet mit entsprechender Länge oder ist dein Beispiel falsch (das nicht nur Permutationen zeigt)?
Womöglich wäre Variationen richtiger?
Ich vertu mich da immer.
Wutz schrieb:
hans234 schrieb:
Gibt es da einen Trick ohne 7 Schleifen?
Ja, du kannst es mit Rekursion probieren. Da hast du dann keine 7 Schleifen.
Das stell ich mir im Moment noch komplizierter als die 7 Schleifen vor. Wobei vl muss ich mir das noch überlegen.
SeppJ schrieb:
Du kannst es auch mit nur einer Schleife machen, wie dir seldon schon gezeigt hat.
Echt, könntest du mir sagen wie das geht?
seldon schrieb:
Für diesen speziellen Fall gäbe es die ganz einfache Methode:
#include <stdio.h>
int main(void) {
int i;
/* Alles im Oktalsystem */
for(i = 0; i < 01000000; ++i) {
printf("%06o\n", i);
}
return 0;
}
...und wenn du ein bisschen über diese Lösung meditierst, kriegst du das bestimmt auch für beliebige Zahlensysteme und beliebig lange Folgen hin.
Stimmt, habe mir jetzt mit deinem Tipp was für meinen konkreten Fall gebastelt.
Aber eigentlich klappt das nur für den Fall, dass es in eine Variable gepackt wird, und tatsächlich Zahlen sind (und nicht Wörter/Buchstaben(wobei das ginge ja wieder)).
Wobei in der Symbolmenge aus Zahlen keine Lücken sein dürften.
Wie könnte es aussehen wenn es Wörter wären (Aal, Bär, Car) und nachher in einem (2Dim) Array stehen sollen?
Also
Array[1] = {Aal, Aal, Aal};
Array[2] = {Aal, Aal, Car};
Array[3] = {Aal, Aal, Bär};
Array[4] = {Aal, Bär, Aal};
Array[5] = {Aal, Car, Aal};
Array[6] = {Bär, Aal, Aal};
Array[7] = {Car, Aal, Aal};
Array[8] = {Car, Bär, Aal};
Array[9] = {Bär, Car, Aal};
...
Ne einfache Idee?
Was mir grad durch den Kopf spukt:
Mit ähnlichem Verfahren wie oben einmal die Zahlen Generieren.
Jedem Symbol (Wort) Einen Wert Zuweisen und dann wird per Digit auswerten für welches Wort/Symbol die Zahl steht und das Array aufbauen.
Dabei wäre zu berücksichtigen dass der Array eintrag nur komplett erstellt werden kann wenn für alle Digits der Zahl ein Zugewiesenes Wort existiert.
Also
Aal = 1
Bär = 2
Car = 3
Zahl 1 der schleife ist: 111 --> Aal, Aal, Aal
Zahl 2 der schleife ist: 112 --> Aal, Aal, Bär
Man müsste hald auch schauen das führende nullen dabei sind und man das Zerlegen kann ...