in reply to A new golf challenge - Natural Sorting

perl -e '$\=$/;$,=" ";@d=@a=sort{lc$a cmp lc$b}@ARGV;for(0..$#a){if($a +[$_]=~/(\d+)/){$b{$1}=$_;push@c,$_}} for(sort{$a<=>$b}keys%b){$d[shif +t@c]=$a[$b{$_}]}print@d' 1 A amstelveen Amsterdam Amsterdam5 Amsterda +m40 Amsterdamned

Replies are listed 'Best First'.
Re^2: A new golf challenge - Natural Sorting
by salva (Canon) on Apr 06, 2006 at 22:30 UTC
    $ perl -e 'sub k{for(@p=$_[0]=~/\d+|[a-z]+/gi){if(/^\d/){s/^0+//;$l=le +ngth;$_="9"x($l/9).$l%9 .$_}}lc join"\0",@p}@s=sort{k($a)cmp k$b}@ARG +V;print"@s\n"' 1 A amstelveen Amsterdam Amsterdam5 Amsterdam40 Amster +damned 1 A amstelveen Amsterdam Amsterdam5 Amsterdam40 Amsterdamned
    and numbers are not limited to any range.