Zusammenstellung einer Liste aller Paare

7

Ich bin ganz neu bei Scala, da ich sehr wenig Erfahrung mit der funktionalen Programmierung durch Haskell hatte.

Ich möchte versuchen, eine Liste aller möglichen Paare zusammenzustellen, die aus einer einzigen Eingabeliste erstellt wurden. Beispiel:

%Vor%

Ich habe versucht, zip für jedes Element mit der ganzen Liste zu verwenden, in der Hoffnung, dass es das eine Element im ganzen Duplizieren würde. Es hat nicht funktioniert (nur das erste mögliche Paar). Ich bin nicht sicher, wie man ein Element wiederholt (Haskell tut es mit cycle und take Ich glaube), und ich hatte Schwierigkeiten, der Dokumentation auf Scala zu folgen.

Das lässt mich denken, dass es wahrscheinlich eine prägnantere, funktionellere Art gibt, die gewünschten Ergebnisse zu erzielen. Hat jemand eine gute Lösung?

    
KChaloux 03.08.2012, 21:11
quelle

3 Antworten

21

Wie wäre es damit:

%Vor%     
dbyrne 03.08.2012, 21:17
quelle
2

Für diejenigen von euch, die keine Duplikate wollen:

%Vor%     
keos 17.08.2017 01:24
quelle
1

Hier ist eine andere Version mit map und flatten

val pairs = nums.flatMap(x => nums.map(y => (x,y)))

List[(Int, Int)] = List((1,1), (1,2), (1,3), (1,4), (1,5), (2,1), (2,2), (2,3), (2,4), (2,5), (3,1), (3,2), (3,3), (3,4), (3,5), (4,1), (4,2), (4,3), (4,4), (4,5), (5,1), (5,2) (5,3), (5,4), (5,5))

Dies kann dann leicht in eine composePairs-Funktion eingefügt werden, wenn Sie möchten:

%Vor%     
Brian 03.08.2012 21:52
quelle