in reply to A new golf challenge - Natural Sorting
Not truly golfed; more of a canonical solution:
sub _nsc { my( $x, @a ) = @{$_[0]}; my( $y, @b ) = @{$_[1]}; @a && @b ? ( $x =~ /\d/ ? ( $y =~ /\d/ ? $x <=> $y || _nsc(\@a,\@b) : -1 ) : ( $y =~ /\d/ ? 1 : lc($x) cmp lc($y) || _nsc(\@a,\@b) )) : ( @a ? 1 : @b ? -1 : 0 ) } sub natsort { map join('',@$_), sort {_nsc($a,$b)} map [/(\d+|\D+)/g], @_ }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: A new golf challenge - Natural Sorting
by jdporter (Paladin) on Mar 17, 2006 at 14:44 UTC | |
|
Re^2: A new golf challenge - Natural Sorting
by ikegami (Patriarch) on Mar 17, 2006 at 14:44 UTC | |
by QM (Parson) on Mar 17, 2006 at 15:08 UTC | |
by jdporter (Paladin) on Mar 17, 2006 at 14:55 UTC |