Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^4: Custom Sort An AoA

by Limbic~Region (Chancellor)
on Apr 01, 2014 at 17:54 UTC ( [id://1080611]=note: print w/replies, xml ) Need Help??


in reply to Re^3: Custom Sort An AoA
in thread Custom Sort An AoA

SuicideJunkie,
...and limited in length....

You would also need to know that limit and pad everything at every level or else it would still be very complex.

If you need it to be fully generic...

Ah yes, this is along the lines of what I was looking for.

Cheers - L~R

Replies are listed 'Best First'.
Re^5: Custom Sort An AoA
by shmem (Chancellor) on Apr 02, 2014 at 08:20 UTC
    Ah yes, this is along the lines of what I was looking for.

    Although it feels a bit strange spoon-feeding you a solution... ;)

    #!/usr/bin/perl -l sub LRsort { @$a <=> @$b || do { for (1..@$a) { my $LR = $a->[-$_] =~ /^\d+(?:\.\d+)?$/ && $b->[-$_] =~ /^\d+(?:\.\d+)?$/ ? $a->[-$_] <=> $b->[-$_] : $a->[-$_] cmp $b->[-$_]; return $LR if $LR; } } } sub d { print '[',join(', ',map{"'$_'"}@$_),']' for @_ } my @list = ( ['blah', 'asdf', 'foo', 'bar'], ['two'], ['zzz', 'def', 'ghi'], ['one'], ['mmm', 'def', 'ghi'], ['qqq', 'xyz', 'aaa'], ); my @sorted = sort LRsort @list; print "strings sorted"; d @sorted; $_ = [ map { my $o; $o+= ord for split//;$o } @$_ ] for @list; print "strings numified"; d @list; my @sorted = sort LRsort @list; print "numeric"; d @sorted; _END_ strings sorted ['one'] ['two'] ['qqq', 'xyz', 'aaa'] ['mmm', 'def', 'ghi'] ['zzz', 'def', 'ghi'] ['blah', 'asdf', 'foo', 'bar'] strings numified ['407', '414', '324', '309'] ['346'] ['366', '303', '312'] ['322'] ['327', '303', '312'] ['339', '363', '291'] numeric ['322'] ['346'] ['339', '363', '291'] ['327', '303', '312'] ['366', '303', '312'] ['407', '414', '324', '309']

    Implementing the orcish maneuver as kennethk suggested is left as an excercise for the reader.

    perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'
      shmem,
      I almost started the thread with I know this is false laziness but.... You are right that this was well within my capabilities. I am not one to make excuses but I have been completely immersed in 6502 Assembly since last Friday afternoon. In fact, this code was to identify an execution path through some assembly. When the answer didn't immediately pop into my head I decided it was best not to think about it. I knew if I switched contexts from Assembly (which I am just learning) to Perl, the effort to regain where I was would be a lot of work.

      Mea culpa

      Cheers - L~R

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1080611]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2024-03-29 11:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found