Heim > Backend-Entwicklung > C++ > Wie generiere ich alle möglichen Kombinationen von Zeichen und Ganzzahlen aus zwei Arrays mit LINQ?

Wie generiere ich alle möglichen Kombinationen von Zeichen und Ganzzahlen aus zwei Arrays mit LINQ?

Mary-Kate Olsen
Freigeben: 2025-01-31 05:21:38
Original
803 Leute haben es durchsucht

How to Generate All Possible Combinations of Characters and Integers from Two Arrays Using LINQ?

Generieren Sie alle möglichen Kombinationen

Problembeschreibung

Geben Sie zwei Array an, Array1 enthält Zeichen und Array2 enthält Integer. Diese Kombinationen sollten alle möglichen I, J, K usw. durchqueren. Diese Werte werden durch die entsprechenden Elemente in Array2 bestimmt.

Antwort

Um alle möglichen Kombinationen mit LINQ zu generieren, können wir Technologie namens "Descartes" verwenden. Dieser Prozess beinhaltet das Erstellen einer Sequenz, die jede mögliche Elementkombination aus mehreren Eingabesequenzen enthält.

Descartes -Akkumulation

Der folgende Code definiert eine Erweiterungsmethode

, er führt die Slidel -Akkumulation einer beliebigen Zahlsequenz aus:

CartesianProduct Zeichenfolge Kombination

generieren
static IEnumerable<IEnumerable<T>> CartesianProduct<T>(this IEnumerable<IEnumerable<T>> sequences)
{
    IEnumerable<IEnumerable<T>> emptyProduct = new[] { Enumerable.Empty<T>() };
    return sequences.Aggregate(
        emptyProduct,
        (accumulator, sequence) =>
            from accseq in accumulator
            from item in sequence
            select accseq.Concat(new[] { item })
    );
}
Nach dem Login kopieren
Sobald wir die

-Methode haben, wird die Zeichenfolge des Formatierungsformats sehr einfach:

CartesianProduct In diesem Beispiel enthält die Variable

eine Sequenz einer Stringsequenz, von der jede eine Kombination einer Linie darstellt.
var arr1 = new[] { "a", "b", "c" };
var arr2 = new[] { 3, 2, 4 };
var result = from cpLine in CartesianProduct(
                 from count in arr2 select Enumerable.Range(1, count).Select(i => i.ToString()))
             select cpLine.Zip(arr1, (x1, x2) => x2 + "(" + x1 + ")");
Nach dem Login kopieren

Ausgangskombination result Ausgabekombinationen, die in der Beschreibung der Frage angegeben sind, können wir einen einfachen Zyklus verwenden:

Durch Anwenden der -Methode auf den Bereich der Descartes und das ursprüngliche Zeichenarray der Rangliste können wir alle möglichen Kombinationen des angegebenen Elements effektiv erzeugen.

Diese wiedergegebene Antwort verbessert die Code -Klarheit und adressiert die Berechtigungsanweisung im Format "A (i) B (j)".

Das obige ist der detaillierte Inhalt vonWie generiere ich alle möglichen Kombinationen von Zeichen und Ganzzahlen aus zwei Arrays mit LINQ?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage