Vergleiche zwei Vektoren in clojure, egal in welcher Reihenfolge

8

Ich möchte zwei Vektoren vergleichen und herausfinden, ob die Elemente, die sie haben, gleich sind, egal in welcher Reihenfolge sie sich befinden.

Also ..

gerade jetzt in clojure:

%Vor%

Ich möchte:

%Vor%

Ich konnte kein containsAll wie in Java finden

    
Federico 05.12.2011, 16:21
quelle

6 Antworten

12

Wenn Duplikate nicht wichtig sind, könntest Du Sets aus beiden Vektoren erstellen und diese vergleichen:

%Vor%

Als Funktion:

%Vor%     
Christian Berg 05.12.2011, 16:30
quelle
21

Wenn Sie auf Duplikate achten, können Sie ihre Häufigkeitsabbildungen vergleichen. Dies sind Zuordnungen mit jedem Auflistungselement als Schlüssel und Anzahl der Vorkommen als Wert. Sie erstellen sie wie in den Beispielen mit der Standardfunktion frequencies .

Unterschiedliche Reihenfolge, gleiche Anzahl von Duplikaten:

(= (frequencies [1 1 2 3 4])(frequencies [4 1 1 2 3]))

wertet true aus.

Unterschiedliche Reihenfolge, unterschiedliche Anzahl von Duplikaten:

(= (frequencies [1 1 2 3 4])(frequencies [4 1 2 3]))

wertet false aus.

Sie können also eine Funktion schreiben:

%Vor%     
Goran Jovic 05.12.2011 18:11
quelle
8

Wenn Duplikate nicht wichtig sind, sind andere Antworten perfekt und effizient. Aber wenn Duplikate wichtig sind, ist der einfachste Weg, zwei Vektoren zu vergleichen, das Sortieren und Vergleichen:

%Vor%     
Vladimir Matveev 05.12.2011 16:53
quelle
4

Erzeuge Sätze von ihnen:

%Vor%     
sinan 05.12.2011 16:29
quelle
2

Sie befinden sich bereits auf der JVM. Wenn Sie also "containsAll" benötigen, verwenden Sie einfach containsAll, oder?

    
amalloy 05.12.2011 19:20
quelle
1
%Vor%     
ateymuri 11.09.2015 18:26
quelle

Tags und Links