NaturalSort
idea original: www.codinghorror.com
Si le mostramos la siguiente secuencia de archivos a una persona normal (léase no-programador):
- abc1.txt
- abc10.txt
- abc100.txt
- abc15.txt
- abc2.txt
- abc3.txt
- abc45.txt
- abc6.txt
Nos va a decir que esa secuencia se encuentra desordenada, mientras que si se la mostramos a un programador, probablemente nos diga que se encuentra en perfecto orden. Esta diferencia de razonamiento se debe a que el programador está acostumbrado a la forma en que los lenguajes ordenan una serie de cadenas.
Pero esta forma de ordenar (ASCIIbeticamente?) es generalmente confusa para el usuario que espera una forma mucho más natural:
- abc1.txt
- abc2.txt
- abc3.txt
- abc6.txt
- abc10.txt
- abc15.txt
- abc45.txt
- abc100.txt
El problema se origina en que los programadores llaman al ordenamiento del lenguaje y no le dedican mayor pensamiento, y si el programador quiere utilizar el ordenamiento más natural, se ve obligado a crear su propia implementación, debido a que prácticamente ningún lenguaje trae por defecto un ordenamiento “Natural” (NaturalSort de ahora en adelante).
Obviamente, si se desea una solución fácil, se puede simplemente preceder los números con una serie de ceros, quedando:
- abc001.txt
- abc002.txt
- abc003.txt
- abc006.txt
- abc010.txt
- abc015.txt
- abc045.txt
- abc100.txt
Que si bien funciona tiene la desventaja de que se debe saber por anticipado el rango que van a tener los archivos.
Si se busca en internet se pueden encontrar varias implementaciones del NaturalSort, pero lo divertido es tratar de implementarlo uno mismo.
Teniendo en cuenta que es una tarea bastante trivial, cualquier programador que se precie debería poder hacerla en 40 lineas o menos, lo dejo como desafío.
Muy buen post, la verdad.
Bueno nada en fin salu2
Saludos a Toda La Comunidad ! !
Comentario por Agustin Polito — Enero 1, 2008 @ 4:24 am