Permutationen von NSArray-Elementen generieren

8

Nehmen wir an, ich habe ein NSArray von NSNumbers wie folgt: 1, 2, 3

Dann würde die Menge aller möglichen Permutationen ungefähr so ​​aussehen:

  

1, 2, 3

     

1, 3, 2

     

2, 1, 3

     

2, 3, 1

     

3, 1, 2

     

3, 2, 1

Was ist ein guter Weg, dies in objective-c zu tun?

    
node ninja 24.09.2010, 21:49
quelle

5 Antworten

8

Ich habe den Code von Wevahs Antwort oben benutzt und einige Probleme damit entdeckt, also hier meine Änderungen, damit es richtig funktioniert:

NSArray + Permutation.h

%Vor%

NSArray + Permutation.m

%Vor%     
Pegolon 02.07.2011 10:55
quelle
5

Es könnte einen besseren Weg geben, dies zu tun (direkt vor Ort oder so), aber das scheint zu funktionieren:

Kopfzeile:

%Vor%

Implementierung:

%Vor%

Um es zu verwenden, einfach #import die Header-Datei, und rufen Sie [yourArray allPermutations] ; Die Methode gibt ein Array mit Arrays für jede Permutation zurück.

[Code aus PHP-Code hier angepasst.]

    
Wevah 25.09.2010 10:08
quelle
4

Sie können NSString *characters in id something ändern und sie für jeden Objekttyp verwenden

%Vor%     
ssj 04.07.2011 01:11
quelle
3

Ich bin kürzlich auf dasselbe Problem gestoßen und habe eine rekursive Lösung geschrieben, von der ich glaube, dass sie besser lesbar ist. Es beruht auf dem Kernprinzip, das hier vermerkt ist. Ich schließe es hier für den Fall ein, dass es jemandem hilft:

%Vor%

Beispielaufruf:

%Vor%

Ergebnis:

  

1, 2, 3

     

1, 3, 2

     

2, 1, 3

     

2, 3, 1

     

3, 1, 2

     

3, 2, 1

    
Aviram 28.07.2016 16:13
quelle
2

Antwort von SSJ auf

erweitert

-log druckt für Klarheit

- Arbeit mit irgendeinem Objekt

- weitere Erklärungen

-bedeckt Kantenfälle, bei denen Fehler auftreten können

%Vor%

Protokollausgabe für Eingang @ [@ 1, @ 2, @ 3]

%Vor%     
mihai 30.10.2014 01:20
quelle