Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^3: How to perform different sorts on multiple sections of items in the same array

by johngg (Canon)
on Dec 30, 2014 at 12:28 UTC ( [id://1111710]=note: print w/replies, xml ) Need Help??


in reply to Re^2: How to perform different sorts on multiple sections of items in the same array
in thread How to perform different sorts on multiple sections of items in the same array

Perhaps I misinterpreted the OP's spec. I thought the requirement was to sort all those containing an 'r' followed by those starting with an 'e' and finally the remainder but I can see that your interpretation of leaving each set in their relative positions could be more accurate. Perhaps estreb could clarify?

Your algorithm does not exclude items that contain an 'r' from being considered when processing items that start with an 'e'. Eg. 'error'.

Nor does it exclude items that contain an 'r', or start with an 'e', from being processed when reverse sorting "the ones that are left".

I'm not sure you are correct in those statements. The if ( m{r} ) { ... } elsif ( m{^e} ) { ... } else { ... } section assigns ascending values to $type which is packed as the first term and becomes the primary key for the sort. Thus all those starting with an 'r' are sorted separately from those starting with 'e' which are again separate from the remainder. I think this is demonstrated by the output.

carpet } error } Strings containing an 'r' anywhere prawn } are sorted ascending alpha reptile } emblem } engine } Strings starting with 'e' but not echo } containing an 'r' are sorted ascending eskimo } alpha on the third character copy } soap } Strings neither containing an 'r' nor cabin } starting with 'e' are sorted descending pail } alpha on the last character skunk }

Please let me know if you still think I am having a senior moment and have got this aspect of the algorithm completely wrong.

Update: Corrected wrong variable in explanation, s/$ord/$type/

Cheers,

JohnGG

Replies are listed 'Best First'.
Re^4: How to perform different sorts on multiple sections of items in the same array
by BrowserUk (Patriarch) on Dec 30, 2014 at 12:40 UTC
    Please let me know if you still think I am having a senior moment and have got this aspect of the algorithm completely wrong.

    No. I was :)

    Looking again at your code, post reading your explanation, I now see the effect/purpose of your $type variable -- to effectively segregate and pre-order the three subsets of the data.

    And, looking again at the OPs description, yours is just as valid an interpretation of it, as mine.

    Sorry for having misinterpreted your code the first time; and thankyou for the patient explanation. I learnt something -- which is always nice :)


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2024-04-18 01:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found