Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1384to1388
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ausgabe Permutation-ohne Wdhlg., Beachtg. Reihenf.

Ausgabe Permutation-ohne Wdhlg., Beachtg. Reihenf.
16.10.2014 13:22:48
Joerschi
Hallo liebes Forum,
hat jemand einen Ansatz, wie man in Excel alle Kombinationen (Reihen) einer Zeichenfolge ausgeben lassen kann (Beachte: a) ohne Wiederholung, b) ohne Berücksichtigung Reihenfolge)?
Eine Lösung für die Auflistung ohne Wiederholung gibts schon hier: http://www.excelformeln.de/formeln.html?welcher=325
Diese Webseite rechnet sogar die Kombinationen (ist kein Excel) aus: http://www.zum.de/Faecher/Materialien/gebhardt/stochastik/Kombin.html
Als Beispiel könnte man die Zeichenreihe ABCDE nehmen, welche auf 13 unterschiedliche Positionen ( 1 bia 13) verteilt werden kann (wären 126 verschiedene Möglichkeiten weil k=5. n=9).
Kann man so etwas in Excel "simulieren"?
Danke vorab und beste Grüße
Joerschi

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausgabe Permutation-ohne Wdhlg., Beachtg. Reihenf.
16.10.2014 13:34:32
Joerschi
leider nicht, da dort Wiederholungen drin sind (doppelte Zeichen).
Das was ich meine sind im Grunde alle möglichen Zeichenfolgen des Binominialkoeffizienten.

AW: Ausgabe Permutation-ohne Wdhlg., Beachtg. Reihenf.
16.10.2014 13:43:01
Joerschi
den Link hab ich doch im Eingangspost angegeben.
Das ist zwar ohne Wiederholungen, aber nicht gleichzeitig ohne Berücksichtigung der Reihenfolge.
Ich suche einen Ansatz wo Beides kombiniert ist (ohne Wiederholung, ohne Berücksichtigung Reihenfolge innerhalb der Ausgabe-Zeichenreihen). Man kann den Link möglicherweise als Basis nutzen, aber wie weiter...?

Anzeige
AW: Ausgabe Permutation-ohne Wdhlg., Beachtg. Reihenf.
16.10.2014 13:55:09
Joerschi
hilft leider auch nicht.
Es werden ja nur die Berechnungsformeln der Statistik angegeben (die wir kennen: Binominialkoeffizient).
Ich suche einen Ansatz über das Ausgeben der tatsächlichen Ausgabereihen, Zeile für Zeile.

Ausgabe?
16.10.2014 19:07:44
Michael
Hallo Joerschi,
was willste denn ausgegeben haben? Die Werte in Spalten oder die Kombinationen der Spalten?

1 2 3 4
a b
a   b
a     b
a b
a   b
a b

oder

1	2
1	3
1	4
2	3
2	4
3	4
Ich komme bei 1..13 auf n=13 und nicht n=9.
Schöne Grüße,
Michael

Anzeige
AW: Ausgabe?
16.10.2014 19:27:20
Joerschi
Hi Michael,
ja verschrieben. n ist natürlich 13 (n=13 und k=5 ergibt 1287 verschiedene Kombinationen).
Die untere Variante finde ich besser.
Je Kombination eine Zeile wäre optimal (wobei die Spalten A bis M die Positionen 1 bis 13 darstellen). Die Zeichenreihe (Kombination) kann dabei in einem Feld hintereinander weg stehen oder auch gleich verteilt auf die Positionen (muss aber nicht sein).
Liebe Grüße
Joerschi

AW: Ausgabe!
17.10.2014 14:28:57
Michael
Hi Joerschi,
daß ich Dich frage, was Du haben willst, heißt leider nicht, daß ich die Lösung aus dem Handgelenk schüttele.
Es interessiert mich aber, weil ich mich vor 30 Jahren schon zu blöd angestellt habe, um die Türme von Hanoi mit einem rekursiven Algorithmus zu programmieren. Heutzutage steht die Lösung schon in wikipedia:
http://de.wikipedia.org/wiki/T%C3%BCrme_von_Hanoi#Rekursiver_Algorithmus
Ich melde mich später nochmal. Wenn ich's nicht hinbekomme, sollen sich Berufenere daran austoben.
Sag: wozu BRAUCHT man so ein Zeug nur?
Schöne Grüße,
Michael

Anzeige
Info: wofür gebraucht
17.10.2014 15:05:29
Joerschi
bisschen private Statistikrechnung zum Nachrechnen von diversen "Behauptungen" in Büchern bezüglich Spielsystemen im Lotto/Toto etc :-)
Ändert nicht die Welt, aber ich möchte Zahlen immer gern nachvollziehen können
LG, Joerschi

AW: Info: wofür gebraucht
17.10.2014 19:07:17
Michael
Hallo Joerschi,
Du hast mich was Nerven gekostet! Halb drei bis kurz vor sieben, das kannste nich bezahlen...
Also, folgende Lösungsvorschläge:
a) Du speicherst Dir die Seite aus Deinem ersten, nein, zweiten link ("zum") lokal ab, das ist nämlich nur JavaScript, und das funzt auch lokal; Du kannst ja alles an Text rauslöschen, was Du nicht immer wieder sehen willst. Die Einschränkung mit max. 10 bzw. 1000 steht in der Zeile 74 und sieht so aus:
if(anzeigen&&(f.ges.value Man sollte meinen, daß das Skript auch läuft, wenn Du links 49 statt 10 einsetzt und rechts irgendwas anderes, Passendes.
b) Du schaust Dir mal diese Seite an: http://theory.cs.uvic.ca/amof/e_comb.html
Da sind die Grenzen "weiter draußen", zumindest bis n=20.
c) Du kompilierst das folgende PASCAL-Programm, z.B. bei http://www.onlinecompiler.net/pascal und lädtst Dir die .exe runter und benennst sie auf einen "normalen" Dateinamen um, z.B. Kombi.exe
Das rufst dann in der DOS-Box auf mit Kombi k n, wobei Du k und n durch die gewünschten Werte ersetzt, also etwa so:
C:\Dein_Ordner>kombi 2 4
Dann erfolgt die Ausgabe am Bildschirm.
Mit
C:\Dein_Ordner>kombi 2 4 >Werte.txt
werden die Zahlen in Werte.txt geschrieben, die Du wiederum in Excel importieren kannst.
Also, hier das Programm:

Program Combinations;
(* Quelle: http://rosettacode.org/ _
wiki/Combinations#Pascal
*)
(*
const
m_max = 3;
n_max = 5;
*)
var
m_max, n_max,fehler:integer;
f:text;
var
combination: array [1..20] of integer;
(* Beschraenkung auf k max. 20 *)
procedure generate(m: integer);
var
n, i: integer;
begin
if (m > m_max) then
begin
for i := 1 to m_max do
write (f,combination[i]:4);
writeln(f);
end
else
for n := 1 to n_max do
if ((m = 1) or (n > combination[m-1])) then
begin
combination[m] := n;
generate(m + 1);
end;
end;
begin
assign(f,'');
rewrite(f);
Val(ParamStr(1), m_max,   fehler); (* k *)
if (fehler0) or (m_max>20) then BEGIN writeln(f,'m_max passt nicht'); halt END;
Val(ParamStr(2), n_max,   fehler); (* n *)
if (fehler0) or (n_max>50) then BEGIN writeln(f,'n_max passt nicht'); halt END;
generate(1);
close(f);
end.
Viel Spaß und schöne Grüße,
Michael

Anzeige
Nachtrag
17.10.2014 19:22:03
Michael
So ein Kommandozeilenprogramm ("DOS-Box") läßt sich natürlich auch von Excel aus steuern.
Anbei Datei mit Makro: https://www.herber.de/bbs/user/93220.xls
Setzt natürlich voraus, daß das Kombi.exe (oder wie auch immer es heißt) da ist, und zwar vorzugsweise im gleichen Ordner wie die Excel-Datei (geht auch anders, aber dann mußt nicht endlos rumklicken).
Paß nur auf, daß Du nicht 6 aus 49 testest, damit ist Deine Maschine sicher ne Weile beschäftigt, und alte Excels können keine 13 Mio. Zeilen.
M.

AW: Info: wofür gebraucht
17.10.2014 20:22:21
Joerschi
Hi Michael,
wow - soviel Zeit! Vielen lieben Dank!
Hier müsste es so etwas wie eine Flattr-Funktion geben, denn manchmal ist ein Dankeschön nicht genug.
Mmmhhh-vielleicht kann ich Dir dafür ein pacher Lacher zaubern. Vielleicht kennst Du die Filmseiten zukunftia oder manbeisstfilm noch nicht. Besonders bei Erstgenannter schöner Humor in Rezensionen. Falls Dir sowas gefällt.
Beste Grüße
Joerschi
PS: Ach ja - funktioniert übrigens super. Habe mich für Variante c) entschieden. Ist vielseitiger, wenn auch paar Minütchen Einrichtung.
(Variante b hat Limit von 200 Kombis)

Anzeige
Gerne
18.10.2014 13:09:41
Michael
Hi Joerschi,
freut mich, daß Dir c) gefällt. Ich hab locker zwei Stunden (mit VBA) rumgestöpselt und was hinbekommen, was irgendwie funktioniert, aber nicht richtig, dann hab ich mich doch dazu entschlossen, dem Algorithmus hinterher zu recherchieren. Das Kernstück ist ja rekursiv (d.h. es ruft sich immer wieder selbst auf), und mit nur ein paar Zeilen höchst elegant. Manche Leute können's einfach richtig gut. Und: Internet ist klasse!
Hast die Steuerung via Excel ausprobiert, die ich als Nachtrag geschickt habe? Würde mich noch interessieren.
Auf alle Fälle freut es mich, daß Du mit der Pascal-Geschichte zurechtgekommen bist. Das ist meine Lieblingsprogrammiersprache, und das online-tool ist für so kleine Sachen völlig ausreichend. Für große installiert man halt den fpc (free pascal compiler). Der ist übrigens ein paar Unterversionen weiter.
Vielen Dank für die links, ich gucke sie mir nach dem Einkaufen an.
Schöne Grüße,
Michael
P.S.: flattr mußte ich nachlesen, klingt aber interessant (für geplante Projekte). Danke.

Anzeige
AW: Gerne
19.10.2014 09:16:20
Joerschi
Hey Michael,
yup, flattr ist sehr vielseitig. Wird häufig von kleinen, hochwertigen Webseiten verwendet, wo man den Aufwand des Autors (siehe Astronomieseite astronews.com) oder eben auch Hilfen wie hier im Forum wertschätzen kann. Damit wird garantiert keine vollständige "Entlohnung" gewährleistet, aber eben...gewertschätzt :-)
Die Excel-Steuerung werd ich morgen mal ausprobieren. Hatte mich vorerst damit zufrieden gegeben und war happy, dass es überhaupt funktioniert. Hatte mich sehr überrascht (nach langer Google-Recherche), das es für sowas noch keine Online-Berechnung-Ausgabe irgendwo gibt. Bietet sich ja geradezu an.
Wünsch Dir was - genieß des Restsonntag!
Joerschi

Anzeige
AW: Gerne
19.10.2014 18:08:35
Michael
Hallo Joerschi,
vielen Dank für Deine Antwort.
"Bietet sich ja geradezu an", tja, könnte man echt machen, auf deutsch und etwas nett verpackt.
Ich bin seit Monaten drüber, was zusammenzuprogrammieren, was mit dem Thema zu tun hat und in Richtung Verschlüsselung geht. Hab mir in dem Zusammenhang schon überlegt, Deine Fragestellung mit reinzunehmen.
Programmiert isses eh schon.
Es läßt mir aber auch keine Ruhe! Diese rekursive Geschichte hat ihre Tücken: sie ist "langsam" und braucht "viel Speicherplatz" (s. wiki, rekursion), aber ich hab's heut auf die Schnelle nicht hingekriegt, den Algo in "nicht rekursiv" zu ändern.
Ich bin hier anonym, habe aber vor, das in absehbarer Zeit zu ändern. Wenn Du Lust hast, kannst ja in ein paar Wochen mal in den Profilen nach mir schauen, dann sollte meine site angegeben sein.
Alles Gute und schöne Grüße,
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige