Ich habe eine Liste der Liste als:Haskell: Sortieren nach Höhe in absteigender Reihenfolge
[[4,7,9],[7,4,9],[9,4,7],[5,8,9],[8,5,9],[9,5,8]]
sortiere ich sie umkehren wollen basierend auf Grundfläche (3. Seite)
zB. sort [[4,7,9],[5,8,9]]
sollte [[5,8,9],[4,7,9]]
seit 4 + 7 = 11 < 5 + 8 = 13
ich die folgende Funktion implementiert haben ergeben:
quicksort (s:xs) = quicksort[x | x <- xs, x!!0+x!!1 < s!!2] ++ [s] ++ quicksort[x | x <- xs, x!!0+x!!1 >= s!!2]
Aber es ist nicht die richtige Ausgabe geben.
Jede Hilfe wäre willkommen.
Wie haben Ein allgemeiner Hinweis, fast unlesbares Listenverständnis sollte vermieden werden. Versuchen Sie immer, einen Prelude-Algorithmus mit einem Lambda in diesem Szenario zu verwenden! –
Wahrscheinlich sollten beide Instanzen von 's !! 2'' s !! 0 + s !! 1' sein. Mit dieser Änderung (und dem offensichtlichen Grundfall) scheint Ihr Code zu tun, wonach Sie fragen. –