Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Five Ways to Reverse a String of Words (C#, Perl 5, Perl6, Ruby, Haskell)

by stvn (Monsignor)
on Dec 12, 2006 at 15:27 UTC ( #589295=note: print w/ replies, xml ) Need Help??


in reply to Five Ways to Reverse a String of Words (C#, Perl 5, Perl 6, Ruby, Haskell)

Because I really have come to hate for loops, here is one in Javascript which uses a fixed point combinator to do the looping and filtering of the list.

function (orig, i, acc) { if (i > orig.length) return acc; if (orig[i] != "") acc[acc.length] = orig[i]; return arguments.callee(orig, (i + 1), acc); }(" one two three four ".split(" ").reverse(), 0, []).join(" ")

-stvn


Comment on Re: Five Ways to Reverse a String of Words (C#, Perl 5, Perl6, Ruby, Haskell)
Select or Download Code
Re^2: Five Ways to Reverse a String of Words (C#, Perl 5, Perl6, Ruby, Haskell)
by jdporter (Canon) on Dec 12, 2006 at 15:50 UTC

    Huh?

    " one two three four ".split(/ /).reverse().join(" ")
    We're building the house of the future together.

      Actually that doesn't work correctly in FF or Safari on OS X. It still has several empty strings filling up the array. They become more evident if you do this:

      " one two three four ".split(/ /).reverse().join("|")
      which gives you "||||four|three|two|||one||".

      -stvn

        Interesting... It works fine in EcmaScript. Or at least Jscript. :-)
        So how about

        " one two three four ".split(/ +/).reverse().join(" ")
        We're building the house of the future together.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2014-09-24 03:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (245 votes), past polls