Pregunta

Tengo una lista de tuplas que representan coordenadas de puntos. ¿Cómo puedo clasificarlos por el primer o segundo valor, para poder ordenar mis puntos de izquierda a derecha primero y de arriba a abajo?

¿Fue útil?

Solución

Suena como quieres, por ejemplo

myList |> List.sortBy fst

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

Pero las tuplas admiten la igualdad estructural y la comparación, por lo que la ordenación predeterminada (lexicográfica) puede hacer lo que usted quiere.

Otros consejos

Nota al margen:

Esto no tiene que ver con la clasificación, pero si utiliza las coordenadas agrupadas, puede utilizar una Set en lugar de una lista. Usar un set realmente me ayudó a simplificar mi implementación de Tetris .

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

Cambie a, b si necesita al revés

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top