in reply to Optimizing a sort function (wrap-around alpha)
Technically, each of those lt's should be a ternary operation, because values for true could be different.use strict; use warnings; use List::Util 'shuffle'; my @list = shuffle('A'..'N', 'I'..'K'); my $pick = 'J'; print sort {(($a lt $pick) == ($b lt $pick)) ? ($a cmp $b) : ($b cmp $ +a)} @list;
Update: this GR transorm also works:
use strict; use warnings; use List::Util 'shuffle'; my @list = shuffle('A'..'N', 'I'..'K'); my $pick = 'J'; ++(my $after_pick = $pick); print map substr($_,1), sort map {$_ lt $pick ? "$after_pick$_" : "$pi +ck$_"} @list;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Optimizing a sort function (wrap-around alpha)
by tlm (Prior) on Apr 15, 2005 at 18:24 UTC | |
|
Re^2: Optimizing a sort function (wrap-around alpha)
by SineSwiper (Beadle) on Apr 15, 2005 at 13:45 UTC |