21.05.2023, 03:12
PERMUT.LIST sei der Name für
=LAMBDA(n;[wdh];LET(
x;TEXT(SEQUENZ(10^n-(10-n-1)*10^(n-1);;0);WIEDERHOLEN(0;n));
FILTER(x;NACHZEILE(x;LAMBDA(a;SUMME(n^TEIL(a;SEQUENZ(;n);1))=SUMME(n^SEQUENZ(;n))-wdh)))))
=PERMUT.LIST(6) ergibt die 720 Einträge fassende Liste
123456
123465
:::
654321
=PERMUT.LIST(6;6^2-6^1) erzeugt einen Wiederholer (statt der 2 noch eine 1) mit 360 Einträgen:
113456
113465
:::
654311
=PERMUT.LIST(6;6^2-6^1+6^3-6^1) erzeugt einen Dreier als Wiederholer (statt der 2 und der 3 noch je eine 1) mit 120 Einträgen:
111456
111465
:::
654111
=PERMUT.LIST(6;6^2-6^1+6^3-6^1+6^5-6^4) erzeugt einen Dreier und einen Zweier (statt der 2 und der 3 noch je eine 1 sowie statt der 5 noch eine 4) mit 60 Einträgen:
111446
111464
:::
644111
=PERMUT.LIST(6;6^2-6^1+6^3-6^1+6^5-6^4+6^6-6^4) erzeugt zwei Dreier (statt der 2 und der 3 noch je eine 1 sowie statt der 5 und der 6 noch je eine 4) mit 20 Einträgen:
111444
114144
:::
444111
Achtung: Nur Excel 365/XLWeb. Die Funktion braucht bei n=6 einige Sekunden. n kann 2 bis 6 betragen. Benötigt man n=8 (ohne Wdh.): Kombinatorik: Permutationen ohne Wiederholung auflisten * (lässt sich seit XL2007 auch auf n=9 erweitern).
Mit einem Trick erweitert man nun das n bis auf 9 (das Maximum ohne Wdh. in XL2007+):
Zeilen 1:2 bleiben hier noch leer.
B1:F2: bleibt noch leer
A3#: =PERMUT.LIST(5)
B3#: =LET(x;LÄNGE($A3)+SPALTE(A1);EINDEUTIG(SORTIEREN(WECHSELN(ZUSPALTE(ERSETZEN(A3#;SEQUENZ(;x;x;-1);0;x));B1;B2))))
und fülle das bis G3#: aus. Ab F3#: läge nun n>9 vor; Excel XL2007+ kann aber Permutationen nur bis zu n=9 darstellen; ab hier also korrekt als Fehler: #ZAHL!
"Mit Wdh." kann man nun auf n>9 gehen. Gedanke: Man kann die Listen auf jeder Zwischenstufe auch selbst mit Wiederholern ausstatten (über WECHSELN()). Und schon kann man noch höhere n permutieren! Die Formel in B3# ist schon damit ausgestattet.
Beispiel mit n=11 und darin einer 5er- und einer 4er-Wdh.:
B1#: ={1.7.8.9.10.11;2.2.2.4.4.5} sind die Wechsel-Parameter für das Folgende
A3#: =PERMUT.LIST(5;20+120+2500)
B3#[:G3#]: (Formel s. oben)
In diesem G3#: haben wir nun folgende 13860=FAKULTÄT(11)/FAKULTÄT(5)/FAKULTÄT(4) Einträge:
22222444456
22222444465
22222444546
:::
65444422222
=LAMBDA(n;[wdh];LET(
x;TEXT(SEQUENZ(10^n-(10-n-1)*10^(n-1);;0);WIEDERHOLEN(0;n));
FILTER(x;NACHZEILE(x;LAMBDA(a;SUMME(n^TEIL(a;SEQUENZ(;n);1))=SUMME(n^SEQUENZ(;n))-wdh)))))
=PERMUT.LIST(6) ergibt die 720 Einträge fassende Liste
123456
123465
:::
654321
=PERMUT.LIST(6;6^2-6^1) erzeugt einen Wiederholer (statt der 2 noch eine 1) mit 360 Einträgen:
113456
113465
:::
654311
=PERMUT.LIST(6;6^2-6^1+6^3-6^1) erzeugt einen Dreier als Wiederholer (statt der 2 und der 3 noch je eine 1) mit 120 Einträgen:
111456
111465
:::
654111
=PERMUT.LIST(6;6^2-6^1+6^3-6^1+6^5-6^4) erzeugt einen Dreier und einen Zweier (statt der 2 und der 3 noch je eine 1 sowie statt der 5 noch eine 4) mit 60 Einträgen:
111446
111464
:::
644111
=PERMUT.LIST(6;6^2-6^1+6^3-6^1+6^5-6^4+6^6-6^4) erzeugt zwei Dreier (statt der 2 und der 3 noch je eine 1 sowie statt der 5 und der 6 noch je eine 4) mit 20 Einträgen:
111444
114144
:::
444111
Achtung: Nur Excel 365/XLWeb. Die Funktion braucht bei n=6 einige Sekunden. n kann 2 bis 6 betragen. Benötigt man n=8 (ohne Wdh.): Kombinatorik: Permutationen ohne Wiederholung auflisten * (lässt sich seit XL2007 auch auf n=9 erweitern).
Mit einem Trick erweitert man nun das n bis auf 9 (das Maximum ohne Wdh. in XL2007+):
Zeilen 1:2 bleiben hier noch leer.
B1:F2: bleibt noch leer
A3#: =PERMUT.LIST(5)
B3#: =LET(x;LÄNGE($A3)+SPALTE(A1);EINDEUTIG(SORTIEREN(WECHSELN(ZUSPALTE(ERSETZEN(A3#;SEQUENZ(;x;x;-1);0;x));B1;B2))))
und fülle das bis G3#: aus. Ab F3#: läge nun n>9 vor; Excel XL2007+ kann aber Permutationen nur bis zu n=9 darstellen; ab hier also korrekt als Fehler: #ZAHL!
"Mit Wdh." kann man nun auf n>9 gehen. Gedanke: Man kann die Listen auf jeder Zwischenstufe auch selbst mit Wiederholern ausstatten (über WECHSELN()). Und schon kann man noch höhere n permutieren! Die Formel in B3# ist schon damit ausgestattet.
Beispiel mit n=11 und darin einer 5er- und einer 4er-Wdh.:
B1#: ={1.7.8.9.10.11;2.2.2.4.4.5} sind die Wechsel-Parameter für das Folgende
A3#: =PERMUT.LIST(5;20+120+2500)
B3#[:G3#]: (Formel s. oben)
In diesem G3#: haben wir nun folgende 13860=FAKULTÄT(11)/FAKULTÄT(5)/FAKULTÄT(4) Einträge:
22222444456
22222444465
22222444546
:::
65444422222
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel).