Question

J'ai une liste de n-uplets représentant les coordonnées de points. Comment puis-je les trier en fonction de la première ou de la deuxième valeur, de manière à pouvoir classer mes points de gauche à droite et de haut en bas ensuite?

Était-ce utile?

La solution

On dirait que vous voulez, par exemple.

myList |> List.sortBy fst

http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/FSharp.Core/Microsoft.FSharp.Collections.List.html

Mais les n-uplets supportant l'égalité et la comparaison structurelles, le tri par défaut (lexicographique) peut faire ce que vous voulez.

Autres conseils

Remarque latérale:

Cela ne concerne pas le tri, mais si vous utilisez des coordonnées en majuscules, vous pouvez utiliser un Définir au lieu d'une liste. L’utilisation d’un ensemble m’a vraiment aidé à simplifier l’implémentation de Tetris .

 let sorted = List.sort_by (fun (a,b) -> a,b) myList

Modifiez le a, b si vous avez besoin de l'inverse

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top