Laden...

Berechnung aller Permutationen einer Liste

Erstellt von itwestnet vor 10 Jahren Letzter Beitrag vor 10 Jahren 2.775 Views
I
itwestnet Themenstarter:in
1 Beiträge seit 2013
vor 10 Jahren
Berechnung aller Permutationen einer Liste

Hallo Leute,

ich versuche gerade einen Algorithmus zu basteln, der mit aus zwei Listen alle möglichen Kombinationen, ohne dass eine zwei mal vorkommt.

Entstanden ist das aus folgendem Problem: Ich habe zwei mal drei Drähte, die ich miteinander kombinieren muss und möchte alle Kombinationen durchprobieren.

<siehe Anhang>

Rauskommen soll dann genau das:

A0 B1 C2
A1 B0 C2
A2 B1 C0
u.s.w.

Bei meinen Lösungsversuchen, bekomme ich immer doppelte raus.

Hinweis von herbivore vor 10 Jahren

Die "Kombination von zwei Listen" (Originaltitel) zu berechnen, wäre etwas anderes. Gesucht ist hier die Berechnung aller Permutation der zweiten Liste. Die Elemente der ersten Liste bleiben - wie im Bild zu sehen - stets in unveränderter Reihenfolge.

2.207 Beiträge seit 2011
vor 10 Jahren

Hallo itwestnet,

hilft dir das weiter?

doppelte Werte einer Liste löschen

Gruss

Coffeebean

P
660 Beiträge seit 2008
vor 10 Jahren

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

R
212 Beiträge seit 2012
vor 10 Jahren

Wenn du die Liste mit den doppeltern werten schon hast, kannst du die ja auch einfach begrenzen:

IEnumerable<ElementTyp> Distinct = Liste.AsEnumerable().Distinct();

Und das ganze vereinfacht:

var myCartesianProduct = (from x in Liste
from y in Liste
select new { x, y }).Distinct();

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo zusammen,

es geht doch nicht darum, aus einer Liste doppelte Werte zu entfernen, sondern (nur) alle Permutationen der Elemente einer Liste (hier: der zweiten Liste) zu berechnen. Das geht z.B. mit Anzahl und Berechnung möglicher Kombinationen und Permutationen [inkl. Code-Snippets].

herbivore